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

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

흥이 오르는 점수 발표

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

요약
합이 x인 양의 추가 점수를 오름차순으로 발표할 때 매번 선두가 바뀌어야 한다는 조건에서 만들 수 있는 서로 다른 최종 순위의 수를 센다.
난이도

어려움10점 중 9점

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

문제

가수 nn명이 겨루는 노래 대결을 보고 있다. 마지막 라운드가 끝났고, 지금 ii번 가수의 점수는 pip_i이다. 현재 점수가 같은 가수는 없다.

이제 심사위원이 추가 점수를 나눠 준다. ii번 가수는 qi≥1q_i \ge 1점을 받고, 심사위원은 q1+q2+⋯+qn=xq_1 + q_2 + \dots + q_n = x를 지켜야 한다.

심사위원은 qiq_i를 작은 값부터 큰 값 순서로 하나씩 발표한다. 같은 점수를 받은 가수가 여럿이면 그중 pip_i가 작은 가수부터 발표한다. 자기 qiq_i가 발표된 가수의 총점은 그 자리에서 pi+qip_i + q_i가 되고, 순위도 곧바로 갱신된다.

발표가 한 번 끝날 때마다 총점이 가장 높은 가수가 한 명뿐이고 그 가수가 직전 1위와 다르면, 이 발표 전체를 흥겨운 발표라고 한다. 첫 발표는 아직 아무것도 발표하지 않은 시점의 순위와 비교한다.

최종 순위는 최종 총점이 높은 가수부터 낮은 가수까지 나열한 것이다. 흥겨운 발표가 되도록 점수를 나눠 줄 때 나오는 서로 다른 최종 순위가 몇 가지인지 구하라.

입력

첫째 줄에 정수 nn과 xx가 주어진다. (1≤n≤121 \le n \le 12, 1≤x≤7001 \le x \le 700)

둘째 줄에 정수 p1,p2,…,pnp_1, p_2, \dots, p_n이 주어진다. (1≤pi≤7001 \le p_i \le 700) pip_i는 모두 다르다.

출력

흥겨운 발표로 만들 수 있는 서로 다른 최종 순위의 개수를 출력한다.

힌트

첫 번째 예제에는 점수가 각각 3점, 1점, 4점인 가수 A, B, C가 있고, 심사위원은 12점을 나눠 준다.

심사위원이 q=[2,7,3]q = [2, 7, 3]을 골랐다고 하자. 발표는 qq가 작은 순서로 진행된다.

  • A를 발표한다. A는 5점이 되어 1위에 오른다.
  • C를 발표한다. C는 7점이 되어 1위에 오른다.
  • B를 발표한다. B는 8점이 되어 1위에 오른다.

이 발표는 흥겨운 발표다.

q=[3,3,6]q = [3, 3, 6]은 흥겨운 발표가 아니다. 첫 발표 뒤에 1위가 두 명이기 때문이다. 3점을 받은 두 가수 중 pip_i가 작은 B를 먼저 발표한다. q=[6,5,1]q = [6, 5, 1]도 흥겨운 발표가 아니다. 첫 발표 뒤에도 1위가 그대로이기 때문이다.

1위부터 꼴찌까지 적었을 때 나올 수 있는 최종 순위는 세 가지다.

  • C, B, A (q=[2,5,5]q = [2, 5, 5])
  • B, C, A (q=[2,8,2]q = [2, 8, 2])
  • C, A, B (q=[4,4,4]q = [4, 4, 4])

B, C, A는 q=[2,8,2]q = [2, 8, 2]와 q=[2,7,3]q = [2, 7, 3] 두 가지로 만들어지지만 한 번만 센다.

예제4

  1. 예제 1

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

    입력
    12 700
    1 2 3 4 5 6 7 8 9 10 11 12
    
    예상 출력
    439084800
    
  3. 예제 3

    입력
    12 1
    1 2 3 4 5 6 7 8 9 10 11 12
    
    예상 출력
    0
    
  4. 예제 4

    입력
    1 700
    123
    
    예상 출력
    0