끔찍한 마감일

시간 제한1초메모리 제한128 MB

요약
각 과제의 소요 시간과 마감 시각이 주어질 때, 모든 마감을 지킬 수 있는 가장 늦은 시작 시각을 구한다.
난이도

보통10점 중 4점

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

문제

흔히들 생각하는 것과 달리, 성실함이 항상 보답받는 것은 아니다! 성실한 스탠퍼드 학부생으로 지내는 동안 David는 아무리 애를 써도 일이 늘 주어진 시간을 꽉 채우도록 불어난다는 사실을 깨달았다. 하루하루의 효율을 높이기 위해, David는 미루기의 기술을 배우기로 했다.

David에게는 다음 주까지 마쳐야 하는 과제가 nn개 있다. ii번째 과제를 처리하는 데는 xix_i만큼의 시간이 걸리며, 반드시 시각 tit_i까지 끝내야 한다. David는 한 번에 하나의 과제만 처리할 수 있고, 한 과제를 시작하면 그 과제를 끝낼 때까지 계속 처리해야 한다(도중에 다른 과제로 바꿀 수 없다). 모든 마감을 지키면서 David가 과제 처리를 시작할 수 있는 가장 늦은 시각은 언제인가?

입력

입력은 여러 개의 테스트 케이스로 이루어진다. 각 테스트 케이스는 세 줄로 구성된다. 첫째 줄에는 정수 nn (1≤n≤10001 \le n \le 1000)이 주어진다. 둘째 줄에는 nn개의 정수 x1 x2 … xnx_1\ x_2\ \dots\ x_n (1≤xi≤101 \le x_i \le 10)이 공백 하나로 구분되어 주어진다. 셋째 줄에는 nn개의 정수 t1 t2 … tnt_1\ t_2\ \dots\ t_n (1≤ti≤10001 \le t_i \le 1000)이 공백 하나로 구분되어 주어진다.

연속한 테스트 케이스 사이는 빈 줄로 구분된다. 정수 00 하나만 있는 줄은 입력의 끝을 의미하며, 이 경우는 처리하지 않는다.

출력

각 테스트 케이스마다, David가 모든 과제를 제때 끝낼 수 있도록 처리를 시작할 수 있는 가장 늦은 시각을 정수 하나로 한 줄에 출력한다. 이 가장 늦은 시작 시각이 시각 00보다 이전이어야만 한다면(즉 음수라면) 대신 impossible을 출력한다.

예제1

  1. 예제 1

    입력
    3
    1 2 1
    9 9 7
    
    2
    2 2
    3 3
    
    0
    
    예상 출력
    5
    impossible