이분탐색의 흔적

시간 제한1초메모리 제한1024 MB

요약
값이 100 이하인 길이 N의 순증가 배열 중 주어진 흔적 값들을 순서대로 방문하는 이분탐색 경로를 만드는 배열의 개수를 센다.
난이도

보통10점 중 7점

유형
동적 계획법, 조합론, 이분 탐색, 수학
정답자
아직 제출이 없습니다

문제

건이와 준성이는 오름차순으로 정렬된 길이가 NN인 배열 A=\[a_1,a_2,⋯ ,a_N]A = \[a\_1,a\_2,\cdots,a\_N]를 보며 게임을 한다. 준성이는 배열의 원소 중 무작위로 하나를 선택한다. 답 구간은 준성이가 선택한 원소가 존재할 수 있는 인덱스의 구간을 의미하며, 처음에는 \[1,N]\[1,N]으로 시작한다.

건이는 준성이에게 가능한 답 구간의 원소를 선택해 생각한 숫자가 이 원소가 맞냐고 질문할 수 있다. 준성이는 그에 따라 Yes, Up, Down 중 하나를 답한다. 준성이는 거짓말을 하지 않으며 준성이가 Yes를 답할 때 게임은 종료된다. 이때 건이가 부른 KK개 원소들을 순서대로 나열한 배열 \[t_1,t_2,⋯ ,t_K]\[t\_1,t\_2,\cdots,t\_K]를 이분탐색의 흔적이라 한다.

건이는 모든 게임에서 항상 최선의 선택을 하기 때문에 가능한 답 구간이 \[s,e]\[s,e]일 때 항상 a_s+⌊e−s2⌋a\_{s + \left \lfloor \frac{e-s}{2}\right\rfloor}를 물어본다.

  • 이후 준성이가 Up을 답했을 때, 다음 구간은 \[s+⌊e−s2⌋+1,e]\[s +\left \lfloor \frac{e-s}{2}\right\rfloor +1 ,e]이 된다.
  • 이후 준성이가 Down을 답했을 때, 다음 구간은 \[s,s+⌊e−s2⌋−1]\[s,s + \left \lfloor \frac{e-s}{2}\right\rfloor-1]이 된다.

이분탐색의 흔적이 주어졌을 때, 배열 AA로 가능한 배열의 개수를 출력해 보자.

입력

첫 번째 줄에 배열의 크기 NN과 이분탐색의 흔적의 크기 KK가 공백으로 구분되어 주어진다.

두 번째 줄에 이분탐색의 흔적을 나타내는 정수 t_1,t_2,⋯ ,t_Kt\_1,t\_2,\cdots,t\_K가 공백으로 구분되어 주어진다.

출력

배열 AA로 가능한 배열의 개수를 1,000,000,007(=109+7)1\\,000\\,000\\,007(= 10^9 + 7)로 나눈 값을 출력한다.

제한

  • 1≤N≤1001 \le N \le 100
  • 1≤K≤⌊log⁡_2N⌋+11 \le K \le \lfloor \log\_2{N} \rfloor + 1
  • 1≤a_1<a_2<⋯<a_N≤1001\le a\_1 < a\_2 < \cdots < a\_N \le 100
  • 1≤t_i≤1001\le t\_i \le 100
  • 모든 i≠ji \neq j에 대해 t_i≠t_jt\_i \neq t\_j
  • 1≤i,j≤K1 \le i, j \le K
  • 가능한 배열 AA가 11개 이상 존재하는 흔적만이 입력으로 주어진다.

예제2

  1. 예제 1

    입력
    3 1
    50
    
    예상 출력
    2450
    
  2. 예제 2

    입력
    5 3
    48 21 31
    
    예상 출력
    1326