화물 열차

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

요약
화물칸 N개를 최대 L개 연속 구간으로 나누어 적재된 칸을 모두 룩셈부르크로 보내고 그중 가장 긴 구간의 길이를 최소화합니다.
난이도

보통10점 중 6점

유형
이분 탐색, 그리디
정답자
아직 제출이 없습니다

문제

화학 회사 NS는 네덜란드, 벨기에, 룩셈부르크에 공장을 하나씩 두고 있다. 세 공장 사이의 화물은 모두 화물 열차로 옮긴다. 어젯밤에도 한 주 분량이 네덜란드 공장을 떠나 벨기에 공장으로 갔는데, 적재가 잘못됐다. 벨기에에 도착한 화차 중 일부에는 룩셈부르크 공장으로 가야 할 화학 물질이 실려 있다. 룩셈부르크 공장은 이 화물을 기다리고 있고, 배송이 늦어지는 만큼 생산 라인이 멈춘다.

실수를 빨리 바로잡으려고 벨기에 공장에 서 있는 화물 열차 쪽으로 기관차 L−1L-1대를 더 보냈다. 이제 쓸 수 있는 기관차는 모두 LL대다. 기관차 한 대는 열차의 앞쪽 연속 구간, 즉 맨 앞 KK량을 떼어 네덜란드로 되돌리거나 룩셈부르크로 보낼 수 있다. 그 밖의 재편성을 할 시간은 없다. 짧은 열차일수록 빨리 달리므로 룩셈부르크로 가는 열차는 최대한 짧아야 한다. 네덜란드로 돌아가는 열차는 길이에 제한이 없다.

룩셈부르크로 가야 하는 화차의 목록이 주어진다. 나머지 화차는 모두 비어 있고, 룩셈부르크로 함께 보내도 되고 네덜란드로 되돌려도 된다. 벨기에에 남길 수 있는 화차는 없다. 화물 열차를 최대 LL개의 연속한 열차로 나누어, 룩셈부르크로 향하는 열차 중 가장 긴 것을 최대한 짧게 만들어라.

입력

첫째 줄에 테스트 케이스의 수 TT가 주어진다. 각 테스트 케이스는 다음과 같이 주어진다.

  • 첫째 줄에 정수 NN, WW, LL이 공백으로 구분되어 주어진다. (1≤N≤1091 \le N \le 10^9, 1≤W,L≤1041 \le W, L \le 10^4, W≤NW \le N) NN은 벨기에에 서 있는 화물 열차의 화차 수, WW는 아직 화물이 실려 있는 화차 수, LL은 기관차 수다.
  • 둘째 줄에 화물이 실려 있는 화차의 번호 WW개가 오름차순으로 공백으로 구분되어 주어진다. 화차 번호는 열차 앞에서부터 11번, 22번, 차례로 NN번까지 붙어 있다.

출력

각 테스트 케이스마다 룩셈부르크로 향하는 열차 중 가장 긴 열차의 화차 수를 한 줄에 출력한다.

힌트

예제 입력의 첫 번째 케이스에서는 맨 앞 화차 두 량을 떼어 룩셈부르크로 보내고, 남은 화차는 네덜란드로 되돌린다.

두 번째 케이스에서는 열차를 세 부분으로 나누어 세 부분 모두 룩셈부르크로 보내는 것이 가장 좋다.

세 번째 케이스에서는 열차를 두 량씩 세 부분으로 나누고 그중 두 부분을 룩셈부르크로 보낸다. 기관차 한 대는 쓰지 않는다.

예제1

  1. 예제 1

    입력
    3
    6 2 2
    1 2
    8 3 3
    1 4 7
    6 4 4
    1 2 5 6
    
    예상 출력
    2
    3
    2