연속 풀이 일수
면접 대비시간 제한4초메모리 제한512 MB
문제 해결 시각과 하루 길이 m이 주어질 때, 시간대 이동값 t(0 이상 m 미만)를 골라 문제를 푼 날이 연속으로 이어지는 최대 길이를 구합니다.
문제
최근 경쟁 프로그래밍 사이트 Deltaforces가 사용자 프로필에 새로운 시각 정보를 많이 추가했다. 그중 하나가 최대 연속 일수이며, 적어도 한 문제를 푼 날이 연속으로 이어지는 최대 일수다. 프로필에 표시된 최대 연속 일수가 실제 훈련량을 잘 반영하지 못해서, 시간대를 바꾸면 연속 일수를 늘릴 수 있는지 생각해 본다.
을 푼 문제 수, 번째 문제를 푼 시각을 라고 하자. 시간대는 부터 까지 개가 있다. 기본 시간대는 이다. 시간대를 로 바꾸면 모든 타임스탬프가 동시에 만큼 증가한다. 즉 시각 에 푼 문제는 모든 에 대해 시각 에 푼 것으로 간주된다.
시각 에 푼 문제는 번째 날에 센다. 여기서 는 보다 작거나 같은 가장 큰 정수다.
연속 일수를 표시하기 위해 Deltaforces는 과 을 찾는다. 각 날 에 적어도 한 문제를 풀었고, 이 가능한 한 커야 한다. 그러면 최대 연속 일수는 로 표시된다.
시간대를 골라서 달성할 수 있는 최대 연속 일수를 구하라.
입력
첫 줄에 테스트 케이스의 수 ()가 주어진다. 각 테스트 케이스가 이어진다.
각 테스트 케이스의 첫 줄에는 두 정수 과 이 주어진다. 각각 푼 문제 수와 시간대의 수다 (; ).
둘째 줄에는 개의 정수 이 주어진다. 서로 다른 제출 시각이며 시간순으로 주어진다 ().
모든 테스트 케이스의 합은 을 넘지 않는다.
출력
각 테스트 케이스마다 최대 연속 일수 와 그것을 달성하는 시간대 를 두 정수로 출력한다 (; ). 답이 여럿이면 그중 아무거나 출력하면 된다.
힌트
첫 번째 예제에서 시간대 를 고르면 타임스탬프가 으로 바뀐다. 이는 날 에 해당하며 3일 연속이다. 시간대 , , 도 같은 답을 준다.
두 번째 예제에서 시간대 를 고르면 타임스탬프가 과 이 되어 날 과 에 해당한다. 시간대 과 도 가능하다.
세 번째 예제에는 시간대가 하나뿐이며, 최대 연속 일수는 다.
네 번째 예제에서는 많은 문제를 짧은 기간에 풀었기 때문에 일 연속을 넘을 수 없다.