근손실
현재 운동 중량은 500이다. 앞으로 \(N\)일 동안 매일 운동 키트를 하나씩 사용하여 운동하려고 한다.
운동 키트는 모두 \(N\)개이며, \(i\)번째 운동 키트를 사용하면 그날의 운동 중량이 즉시 \(A_i\)만큼 증가한다. 하루가 끝날 때마다 운동 중량은 \(K\)만큼 감소한다.
각 운동 키트는 정확히 한 번씩 사용해야 한다. 운동하는 모든 날에 대하여 하루가 끝난 뒤의 운동 중량이 항상 500 이상이 되도록 하는 운동 키트 사용 순서의 개수를 구하시오.
증가량이 같은 운동 키트가 여러 개 있더라도 각각 서로 다른 운동 키트로 취급한다.
입력
첫째 줄에 운동하는 날의 수이자 운동 키트의 수인 \(N\)과 하루가 끝날 때 감소하는 중량 \(K\)가 공백으로 구분되어 주어진다.
둘째 줄에 각 운동 키트의 중량 증가량 \(A_1,A_2,\ldots,A_N\)이 공백으로 구분되어 주어진다.
출력
모든 날의 운동이 끝난 뒤 운동 중량이 항상 500 이상이 되도록 운동 키트를 사용하는 순서의 개수를 출력한다.
제한 사항
- \(1 \le N \le 8\)
- \(1 \le K \le 50\)
- \(1 \le A_i \le 50\)
예제 입력 1
3 4
3 7 5
예제 출력 1
4
예제 설명 1
입력으로 주어진 순서대로 증가량이 \(3\), \(7\), \(5\)인 운동 키트를 각각 1번, 2번, 3번 키트라고 하자.
세 키트를 사용하는 순서는 총 \(3!=6\)가지이다. 각 순서에서 날짜가 끝난 뒤의 운동 중량과 조건 만족 여부는 다음과 같다.
| 키트 사용 순서 | 1일차 | 2일차 | 3일차 | 결과 |
|---|---|---|---|---|
1 → 2 → 3 |
499 | - | - | 1일차에 실패 |
1 → 3 → 2 |
499 | - | - | 1일차에 실패 |
2 → 1 → 3 |
503 | 502 | 503 | 성공 |
2 → 3 → 1 |
503 | 504 | 503 | 성공 |
3 → 1 → 2 |
501 | 500 | 503 | 성공 |
3 → 2 → 1 |
501 | 504 | 503 | 성공 |
1번 키트로 시작하는 두 순서는 첫날 운동이 끝난 뒤 중량이 \(500+3-4=499\)가 되어 조건을 만족하지 못한다. 나머지 네 순서는 모든 날의 운동이 끝난 뒤 중량이 항상 500 이상이다.
따라서 조건을 만족하는 순서는 총 네 가지이며, 정답은 4이다.
코멘트