순열 제작의 달인

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

요약
A를 P로 재배열한 수열에서 왼쪽부터 훑을 때 최댓값이 갱신되는 위치가 K개 이하가 되도록 하는 순열 P의 개수를 센다.
난이도

어려움10점 중 8점

유형
조합론, 동적 계획법, 정렬
정답자
아직 제출이 없습니다

문제

배열 제작의 달인 Jiro는 길이 NN인 수열 AA가 주어졌을 때, 다음 조건을 만족하는 길이 NN의 순열 PP의 개수를 구하고자 한다. 길이 NN의 순열 PP는 11부터 NN까지의 모든 정수를 한번만 사용하여 만든 수열을 의미한다.

  • 수열 BB는 (A_P_1,A_P_2,...,A_P_N)(A\_{P\_1},A\_{P\_2},...,A\_{P\_N})로 정의한다.
  • 수열 BB의 가증스러움은 1≤i≤N1 \le i \le N인 정수 ii에 대해 다음 조건을 만족하는 ii의 개수로 정의한다.
    • i=1i=1 또는 max⁡(B_1,...,B_i−1)<B_i\max(B\_1,...,B\_{i-1}) < B\_i
  • 수열 BB의 가증스러움은 KK 이하이다.

Jiro가 조건을 만족하도록 구한 순열 PP의 개수를 1,000,000,0071\\,000\\,000\\,007으로 나눈 나머지를 구하시오.

입력

첫째 줄에 수열 AA의 길이 NN와 조건에 명시된 KK가 공백으로 구분되어 주어진다. (1≤N≤5,000(1 \le N \le 5\\,000; 1≤K≤N)1 \le K \le N)

둘째 줄에 수열 A_1A\_1, A_2A\_2, ⋯\cdots, A_NA\_N이 공백으로 구분되어 주어진다. (1≤A_i≤109)(1 \leq A\_i \leq 10^9)

출력

Jiro가 조건을 만족하도록 구한 순열 PP의 개수를 1,000,000,0071\\,000\\,000\\,007으로 나눈 나머지를 출력한다.

예제2

  1. 예제 1

    입력
    3 3
    1 2 3
    
    예상 출력
    6
    
  2. 예제 2

    입력
    4 2
    1 1 2 2
    
    예상 출력
    24