아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

이야기 하나 들려줄게 (Large)

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

요약
급여 불만이 남아 있는 동안 장관을 해고할 수 있는 순서를 세어, 남은 급여가 비오름차순이 되는 경우의 수를 10007로 나눈 나머지를 구합니다.
난이도

어려움10점 중 8점

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

문제

공정왕 티론의 이야기를 하나 들려주겠다.

공정왕 티론에게는 장관이 NN명 있었다. 장관은 서열 순으로 1번부터 NN번까지 번호가 붙어 있고, ii번 장관은 매주 금화 sis_i개를 받았다.

어느 날 봉급 명세가 공개되었다. 그때부터 자기보다 서열이 낮은 장관 중에 자기보다 많이 받는 사람이 있으면 그 장관이 불만을 제기했고, 왕은 남아 있는 장관 중 정확히 한 명을 해임했다. 왕은 봉급을 조정하지도 않았고 서열을 바꾸지도 않았다. 해임되는 사람이 불만을 제기한 장관이거나 원인을 제공한 장관일 필요는 없다. 남아 있기만 하면 사건과 아무 상관이 없는 장관도 해임될 수 있다. 불만이 나올 수 있는 동안 해임이 이어졌고, 남은 장관의 봉급이 서열 순으로 비증가가 되는 순간 멈췄다. 남은 장관끼리의 서열 순서는 그대로 유지된다.

봉급이 7,4,6,67, 4, 6, 6일 때 가능한 이야기 하나는 이렇다. 2번 장관이 불만을 제기하자 왕은 1번 장관을 해임했고 4,6,64, 6, 6이 남았다. 2번 장관이 또 불만을 제기하자 왕은 그를 해임했고 6,66, 6이 남았다. 6,66, 6에는 아무도 불만이 없으므로 해임이 멈췄다.

나는 봉급은 기억하지만 해임된 순서는 기억하지 못한다. 내가 들려줄 수 있는 이야기가 몇 가지인지 세어라. 해임된 장관의 순서열이 다르면 서로 다른 이야기다. 봉급이 같아도 원래 서열이 다르면 다른 장관이다. 처음부터 아무도 불만을 제기할 수 없으면 해임은 한 번도 일어나지 않고, 이야기는 빈 순서열 하나뿐이다.

답을 1000710007로 나눈 나머지를 출력한다.

입력

첫째 줄에 테스트 케이스의 개수 TT가 주어진다. 각 테스트 케이스는 두 줄이다. 첫째 줄에 NN이 주어지고, 둘째 줄에 1번 장관부터 NN번 장관까지의 봉급 s1,s2,…,sNs_1, s_2, \dots, s_N이 공백으로 구분되어 주어진다.

제한

  • 1≤T≤201 \le T \le 20
  • 1≤N≤80001 \le N \le 8000
  • 1≤si≤100001 \le s_i \le 10000

출력

각 테스트 케이스마다 Case #x: y 형식으로 한 줄씩 출력한다. xx는 1부터 시작하는 테스트 케이스 번호이고, yy는 가능한 이야기의 수를 1000710007로 나눈 나머지다.

예제2

  1. 예제 1

    입력
    3
    4
    7 4 6 6
    8
    90 80 70 60 50 50 40 30
    2
    7 8
    
    예상 출력
    Case #1: 14
    Case #2: 1
    Case #3: 2
    
  2. 예제 2

    입력
    5
    1
    1
    2
    1 10000
    2
    10000 1
    3
    5 5 5
    3
    1 2 3
    
    예상 출력
    Case #1: 1
    Case #2: 2
    Case #3: 1
    Case #4: 1
    Case #5: 6