만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

길이가 K인 서로 다른 증가 부분 수열

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

요약
주어진 수열에서 길이 K인 증가 부분수열이 만들어 내는 서로 다른 값 수열의 개수를 5000000으로 나눈 나머지로 구한다.
난이도

보통10점 중 7점

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

문제

길이가 NN인 수열 A1,A2,…,ANA_1, A_2, \dots, A_N과 정수 KK가 주어진다. AA의 부분 수열 중에서 길이가 KK이고 증가하는 것이 몇 개인지 구하라. 값의 나열이 같은 부분 수열은 고른 위치가 달라도 하나로 센다.

부분 수열은 AA에서 원소를 0개 이상 지우고 남은 원소의 순서를 그대로 둔 수열이다. 길이가 KK인 부분 수열 B1,B2,…,BKB_1, B_2, \dots, B_K가 증가한다는 것은 1≤i<K1 \le i < K인 모든 ii에서 Bi<Bi+1B_i < B_{i+1}이 성립한다는 뜻이다.

입력

첫째 줄에 수열의 크기 NN과 정수 KK가 주어진다. (1≤N≤1000001 \le N \le 100000, 1≤K≤501 \le K \le 50, K≤NK \le N)

둘째 줄에 A1,A2,…,ANA_1, A_2, \dots, A_N이 공백으로 구분되어 주어진다. (1≤Ai≤1000001 \le A_i \le 100000)

출력

길이가 KK이고 증가하는 서로 다른 부분 수열의 개수를 50000005000000으로 나눈 나머지를 한 줄에 출력한다.

예제2

  1. 예제 1

    입력
    4 3
    1 2 2 10
    
    예상 출력
    1
    
  2. 예제 2

    입력
    5 1
    3 3 1 2 2
    
    예상 출력
    3