끔찍한 마감일
시간 제한1초메모리 제한128 MB
각 과제의 소요 시간과 마감 시각이 주어질 때, 모든 마감을 지킬 수 있는 가장 늦은 시작 시각을 구한다.
문제
흔히들 생각하는 것과 달리, 성실함이 항상 보답받는 것은 아니다! 성실한 스탠퍼드 학부생으로 지내는 동안 David는 아무리 애를 써도 일이 늘 주어진 시간을 꽉 채우도록 불어난다는 사실을 깨달았다. 하루하루의 효율을 높이기 위해, David는 미루기의 기술을 배우기로 했다.
David에게는 다음 주까지 마쳐야 하는 과제가 개 있다. 번째 과제를 처리하는 데는 만큼의 시간이 걸리며, 반드시 시각 까지 끝내야 한다. David는 한 번에 하나의 과제만 처리할 수 있고, 한 과제를 시작하면 그 과제를 끝낼 때까지 계속 처리해야 한다(도중에 다른 과제로 바꿀 수 없다). 모든 마감을 지키면서 David가 과제 처리를 시작할 수 있는 가장 늦은 시각은 언제인가?
입력
입력은 여러 개의 테스트 케이스로 이루어진다. 각 테스트 케이스는 세 줄로 구성된다. 첫째 줄에는 정수 ()이 주어진다. 둘째 줄에는 개의 정수 ()이 공백 하나로 구분되어 주어진다. 셋째 줄에는 개의 정수 ()이 공백 하나로 구분되어 주어진다.
연속한 테스트 케이스 사이는 빈 줄로 구분된다. 정수 하나만 있는 줄은 입력의 끝을 의미하며, 이 경우는 처리하지 않는다.
출력
각 테스트 케이스마다, David가 모든 과제를 제때 끝낼 수 있도록 처리를 시작할 수 있는 가장 늦은 시각을 정수 하나로 한 줄에 출력한다. 이 가장 늦은 시작 시각이 시각 보다 이전이어야만 한다면(즉 음수라면) 대신 impossible을 출력한다.