만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

정직한 관료 통치

면접 대비

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

요약
금화 K개 이하로 나누되 기여도가 작은 관리일수록 적게 받게 하면서, 총애받는 관리 중 기여도가 가장 작은 사람이 최대한 많이 받도록 분배합니다.
난이도

보통10점 중 6점

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

문제

"이것을 관료주의라고 부른다."

"관료주의요?"

"그래. 모든 일은 서류를 채워서 해결되고, 그 서류는 관료라는 특별한 종족이 검토하지."

***

세르게이 루키야넨코, 『Недотёпа』

명랑왕 마르켈의 관리 NN명이 2층을 넘는 건물에 세금을 매기는 법안을 만들었다. 법안이 통과된 뒤 관리들에게는 예산 금화 KK개가 남았다. 관리들은 이 돈을 나눠 갖기로 했다. 왕에게는 정직한 관리만 있으므로 그들은 공정하게 나눈다. 관리 ii는 법안에 wiw_i만큼 기여했다. 관리 ii가 cic_i개, 관리 jj가 cjc_j개를 받을 때, ci<cjc_i < c_j가 성립하는 것은 wi<wjw_i < w_j일 때뿐이다. 특히 기여도가 같은 관리는 같은 개수의 금화를 받아야 한다.

관리 중에는 왕의 총애를 받는 측근이 몇 명 있다. 명랑왕 마르켈은 측근 가운데 기여도가 가장 낮은 사람이 가능한 한 많은 돈을 받기를 원한다. 측근이 아닌 관리의 이익을 최대화할 필요는 없다.

입력

첫 줄에는 관리 수, 측근 수, 나눌 금화 수를 뜻하는 양의 정수 NN과 음이 아닌 정수 MM, KK가 공백으로 구분되어 주어진다(M≤N≤105M \le N \le 10^5, K≤1018K \le 10^{18}). 둘째 줄에는 NN개의 양의 정수 wiw_i(1≤wi≤1091 \le w_i \le 10^9)가 주어지며, wiw_i는 ii번째 관리의 기여도다. 셋째 줄에는 서로 다른 양의 정수 MM개 fif_i(1≤fi≤N1 \le f_i \le N)가 주어지며, 이는 측근의 번호다.

출력

공정한 분배가 가능하면 첫 줄에 POSSIBLE을 출력한다. 둘째 줄에는 ii번째 관리가 받을 금화 수를 나타내는 음이 아닌 정수 NN개를 공백으로 구분해 출력한다. 모든 금화를 나눌 필요는 없다. 명랑왕 마르켈은 기여도가 가장 낮은 측근이 가능한 한 많은 금화를 받기만 바라고, 나머지 관리는 자유롭게 나눌 수 있다. 따라서 올바른 답이라면 어떤 것을 출력해도 된다. 공정한 분배가 불가능하면 IMPOSSIBLE을 출력한다.

힌트

일부 금화는 나눠지지 않고 남을 수 있다. 첫 번째 예시에서는 남은 금화를 두 번째와 다섯 번째 관리에게 줄 수도 있었지만, 그들은 측근이 아니므로 그럴 필요가 없다. 두 번째 예시에서는 올바른 분배에 금화가 최소 4개 필요한데, 남은 금화는 3개뿐이다.

예제2

  1. 예제 1

    입력
    5 2 15
    15 2 33 12 8
    3 4
    
    예상 출력
    POSSIBLE
    4 0 5 3 1
    
  2. 예제 2

    입력
    4 2 3
    1 2 3 2
    1 2
    
    예상 출력
    IMPOSSIBLE