페이지가 로드되지 않나요? 여기를 눌러보면 고쳐질 수도 있어요.
Placeholder

#3171

마법의 순열 1s 256MB

문제

태환이는 험준한 정올 산에 사는 마법사이다.

태환이는 험한 산을 이겨내고 자신을 찾아 온 사람들에게 소원을 들어준다.

그런데 지금이 21세기인지라 케이블 카도 설치되고, 산길도 잘 닦여버려서, 이제는 아무나 태환이가 사는 오두막집을 방문할 수 있다.

어쩔 수 없이 태환이는, 자신의 집을 찾아온 손님들 중, 마법의 순열의 가짓수를 알아내는 사람의 소원만 들어주기로 했다.

 

수열 {1, 2, 3, 4…, N}이 있다.
수열의 원소들을 재배치해서 순열[p
1,p2,..pn]을 만들 수 있다.

예를 들면 N = 4일 때,
{1, 2, 3, 4}를 가지고 p=[4,1,3,2] 또는 p=[3,2,4,1]등을
만들 수 있는 것이다.

이 순열에 대해 다음 두 가지 조건이 성립하면 마법의 순열이라고 한다.

 

#1. 수열 a1, a2, a3, …., aK 가 주어졌을 때, a의 원소에 위치해 있는 순열 p의 구성원은 이웃한 원소들보다 작다.

즉 아래 수식이 성립한다.

Pai-1  >  Pai <  Pa​+1

 

#2. b1, b2, b3 … bL 가 주어졌을 때, b의 원소에 위치해 있는 순열 p의 구성원은 이웃한 원소들보다 크다.

즉  아래 수식이 성립한다.

Pbi-1  <  Pbi  >  Pb​+1

 

이러한 조건을 만족하는 마법의 순열p가 몇 개 있는지만 대답하면, 태환이가 여러분들의 소원을 들어 줄 수 있다.

즉, 여러분이 짝사랑하는 그(그녀)와 이루어지게 할 수도 있고, 이벤트에 당첨되어 제주도 호화여행을 갈 수도 있으며, 여러분들의 올해 KOI점수를 400점 만점으로 만들어줄 수도...있는 학원에 등록할 수 있는 기회를 줄 수도 있다. 

수열 [a1,a2,...,aK]과 [b1,b2,...,bL]가 주어졌을 때, 만들 수 있는 마법의 순열의 가짓수를 구하는 프로그램을 작성하라.


입력

첫 줄에 N, K, L이 공백을 사이에 두고 주어진다. N은 순열을 구성하는 정수의 개수, K는 수열 a의 크기, L은 수열 b의 크기이다. 

두 번째 줄에 K개의 정수 a1,a2,…, aK가 공백을 사이에 두고 주어진다. 

세 번째 줄에 L개의 정수 b1,b2,…, bL이 공백을 사이에 두고 주어진다. 


[제약 조건]

 모든 부분문제에서 3 ≤ N ≤​ 5,000, 1 ≤​ K, L ≤​ 5,000을 만족한다.

수열 a의 원소 ai와 b의 원소 bi의 구성원은 모두 2이상 N-1이하이다.

 


출력

마법의 순열 p의 개수를 10억 7(1,000,000,007)로 나눈 나머지를 구하라.

부분문제

번호 점수 조건
#112점

N ≤​ 7을 만족한다.

#243점

N ≤ 300을 만족한다.

#345점

주어진 제약조건 외에 아무 제약조건이 없다.


예제 #1

4 1 1

2
3
5

예제 #2

10 2 2

2 4
3 9
161280


출처

Penn State CodePSU 2016 Spring Advanced Tier – Problem A, 2018camp contest6 problemE
로그인해야 코드를 작성할 수 있어요.