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

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

예선 라운드 (라지)

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

요약
P개 문제 각각을 푼 사람 수가 주어질 때, 서로 다른 C개 이상의 문제를 푼 사람이 최대 몇 명일 수 있는지 구한다.
난이도

보통10점 중 6점

유형
그리디, 정렬, 조합론
정답자
아직 제출이 없습니다

문제

프로그래밍 대회의 예선 라운드가 막 끝났다. 나는 예선을 통과했고, 나와 함께 통과한 참가자가 몇 명인지 알고 싶다. 손에 있는 정보는 각 문제를 푼 사람 수뿐이다.

예선에는 문제가 PP개 출제되었고, ii번 문제 (0≤i≤P−10 \le i \le P-1)를 완전히 푼 참가자는 SiS_i명이다. 다음 라운드에 진출하려면 문제를 CC개 이상 풀어야 한다. 한 참가자가 같은 문제를 두 번 푼 것은 한 번으로 세므로, 진출한 참가자는 서로 다른 문제를 CC개 이상 푼 셈이다.

이 정보만으로 진출할 수 있었던 참가자 수의 최댓값을 구하라.

입력

첫째 줄에 테스트 케이스의 수 TT가 주어진다. 이어서 TT개의 줄이 주어지며, 각 줄은 공백으로 구분된 정수로만 이루어진다. 먼저 PP, 그다음 CC, 그다음 S0S_0부터 SP−1S_{P-1}까지 PP개의 정수가 온다.

제한

  • 1≤T≤1001 \le T \le 100
  • 1≤C≤P≤601 \le C \le P \le 60
  • 0≤Si≤10170 \le S_i \le 10^{17}

출력

각 테스트 케이스마다 Case #x: y 형식으로 한 줄씩 출력한다. xx는 1부터 시작하는 테스트 케이스 번호이고, yy는 진출할 수 있었던 참가자 수의 최댓값, 즉 서로 다른 문제를 CC개 이상 푼 참가자 수의 최댓값이다.

yy는 최대 6×10186 \times 10^{18}까지 커지므로 64비트 정수를 사용하라.

예제2

  1. 예제 1

    입력
    2
    2 2 73 100
    3 2 245 272 238
    
    예상 출력
    Case #1: 73
    Case #2: 377
    
  2. 예제 2

    입력
    3
    1 1 0
    3 3 0 0 0
    2 1 0 5
    
    예상 출력
    Case #1: 0
    Case #2: 0
    Case #3: 5