교육

학생 수가 많은 학과부터 순서대로, 아직 배정되지 않은 건물 중 수용 가능한 가장 저렴한 건물을 배정하는 규칙을 구현한다.

보통5그리디정렬구현배열면접 대비아직 제출이 없습니다시간 제한5초메모리 제한512 MB

문제

EduCorp는 사교육 시장에 뛰어들려고 경제 부트캠프 학원을 세웠다. 처음 예상과 달리 학원은 빠르게 커지고 있다.

너무 빠르게 커진 나머지 학생이 지금 건물에 다 들어가지 못한다. 새 건물을 짓는 동안 학생을 다른 곳에 수용해야 한다.

각 학과는 원래 쓰던 공간을 팔고 따로 빌린 건물로 옮긴다. 학과끼리 건물을 나눠 쓰지 않으므로 건물 하나에는 학과 하나만 들어간다. 경제를 가르치는 학원답게, 근처에서 빌릴 수 있는 건물의 수용 인원과 임대료는 과제로 위장한 조사로 이미 모아 두었다.

남은 일은 총 임대료가 가장 적어지도록 빌릴 건물을 고르는 것이다.

입력

첫째 줄에 학과의 수 nn과 건물의 수 mm이 주어진다. (1nm50001 \le n \le m \le 5000)

둘째 줄에 정수 s1,,sns_1, \dots, s_n이 주어진다. sis_iii번 학과의 학생 수다. (1si10001 \le s_i \le 1000)

셋째 줄에 정수 p1,,pmp_1, \dots, p_m이 주어진다. pjp_jjj번 건물의 수용 인원이다. (1pj10001 \le p_j \le 1000)

넷째 줄에 정수 r1,,rmr_1, \dots, r_m이 주어진다. rjr_jjj번 건물의 연간 임대료다. (1rj10001 \le r_j \le 1000)

한 줄에 있는 수는 공백 하나로 구분된다.

출력

모든 학과에 건물을 하나씩 배정할 수 없으면 첫째 줄에 impossible을 출력한다.

배정할 수 있으면 정수 v1,,vnv_1, \dots, v_n을 공백으로 구분해 한 줄에 출력한다. viv_iii번 학과가 빌리는 건물의 번호다. 서로 다른 학과는 서로 다른 건물을 빌리고, 모든 ii에 대해 pvisip_{v_i} \ge s_i가 성립해야 한다.

총 임대료 rv1++rvnr_{v_1} + \dots + r_{v_n}이 최소인 배정은 여러 개일 수 있다. 그중 다음 규칙으로 만든 배정 하나만 정답으로 인정한다.

학생 수가 많은 학과부터 차례로 처리하고, 학생 수가 같으면 번호가 작은 학과를 먼저 처리한다. 어떤 학과의 차례에는 아직 아무 학과도 빌리지 않았고 수용 인원이 그 학과의 학생 수 이상인 건물 중에서 임대료가 가장 싼 건물을 빌린다. 임대료가 같은 건물이 여럿이면 번호가 가장 작은 건물을 빌린다. 어떤 학과의 차례에 빌릴 건물이 하나도 없으면 impossible을 출력한다.

이 규칙은 언제나 총 임대료가 최소인 배정을 만든다.