세과영엔 슬픈 전설이 있어

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

요약
매일의 최소 금액 A와 자루 금액 B가 주어질 때, 각 날의 자루가 A_i 이상이 되도록 자루를 날짜에 하나씩 배정하고, 불가능하면 -1을 출력한다.
난이도

보통10점 중 7점

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

문제

세종이는 영재에게 빌려준 돈을 현재까지도 받지 못했다. 세종이는 영재에게 돈을 갚으라고 여러 번 독촉했지만, 슬프게도 영재는 세종이의 말을 알아듣지 못하는 것 같다. 그래서 세종이는 영재에게 마지막 유예 기간 NN일을 주었다. 영재는 세종이가 준 NN일 동안 빌린 돈을 모두 갚아야 한다.

세종이와 영재에게는 특이한 규칙이 있다. 세종이는 ii일째 되는 날에 A_iA\_i 만큼 분노한다. 만약 ii일에 세종이가 A_iA\_i원 이상의 돈을 받지 못한다면 세종이는 영재에게 분노를 표출하게 된다. 영재는 자신이 가진 돈을 NN개의 자루에 나누어 담아 세종이에게 하루에 한 자루씩 주려고 한다.

세종이가 받아야 하는 최소 금액과 영재가 나눠 담은 금액이 주어졌을 때, 영재가 세종이의 분노를 피해 빚을 갚는 방법을 찾는 프로그램을 작성하시오.

입력

첫째 줄에 유예 기간의 날짜 수 NN이 주어진다. (1≤N≤200,000)(1\leq N\leq 200\\, 000)

둘째 줄에 NN개의 양의 정수 A_1A\_1, A_2A\_2, ⋯\cdots, A_NA\_N이 공백으로 구분되어 주어진다. 이때 A_iA\_i는 ii번째 날에 세종이가 받아야 하는 최소 금액이다. (1≤A_i≤108)(1\le A\_i\le 10^{8})

셋째 줄에 NN개의 양의 정수 B_1,B_2,⋯ ,B_NB\_1,B\_2,\cdots ,B\_N이 공백으로 구분되어 주어진다. 이때 B_jB\_j는 영재가 jj번째 자루에 담은 금액이다. (1≤B_j≤108)(1\le B\_j\le 10^{8})

∑_i=1NA_i≤2×109;\sum\_{i=1}^{N}{A\_i}\le 2\times 10^{9}; ∑_j=1NB_j≤2×109\sum\_{j=1}^{N}{B\_j}\le 2\times 10^{9} 이다.

출력

영재가 11일부터 NN일까지 각 날마다 지불해야 하는 금액을 공백으로 구분해 출력한다.

만약 빚을 갚는 것이 불가능해 세종이가 분노를 표출하게 된 경우 대신 -1을 출력한다.

가능한 답이 여러 가지인 경우 그 중 아무거나 하나만 출력한다.

예제2

  1. 예제 1

    입력
    5
    1 2 3 4 5
    7 3 2 5 4
    
    예상 출력
    2 3 4 5 7
    
  2. 예제 2

    입력
    3
    1 3 10000
    9999 9999 9999
    
    예상 출력
    -1