아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

돌의 정령 줄세우기

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

요약
각 위치의 시야 점수 제한이 주어질 때, 오른쪽에서 자신보다 큰 가장 가까운 무리까지의 거리가 제한을 만족하도록 1부터 N까지의 키를 배치한다.
난이도

보통10점 중 7점

유형
스택, 그리디, 구현
정답자
아직 제출이 없습니다

문제

아케인리버에 서식하는 돌의 정령은 무리를 지어 활동하는 경향이 있다. 이때, 어느 돌의 정령 무리의 키는 돌의 정령들이 쌓인 구조의 층수라고 한다.

키가 3인 돌의 정령 무리이다.

키가 7인 돌의 정령 무리이다.

오른쪽을 바라보고 있는 11부터 NN까지의 서로 다른 키를 가진 NN개의 돌의 정령 무리가 있다. 이때, 돌의 정령들은 자신이 속한 무리보다 키가 큰 돌의 정령 무리 너머를 볼 수 없다. 만약 ii번째 위치에 있는 돌의 정령이 jj번째 돌의 정령 무리까지 볼 수 있다면, ii번째 무리의 '시야 점수'는 j−ij-i로 정의한다. 만약 앞에 자신보다 키가 큰 무리가 존재하지 않는다면 시야 점수는 10910^9으로 정의한다. 

아케인리버를 탐험하고 있는 여러분은 크기 NN의 배열 AA를 받아, 만약 A_iA\_i가 음수라면, ii번째 위치의 무리의 시야점수는 −A_i-A\_i 이하이고, A_iA\_i가 양수라면 ii번째 무리의 시야점수는 A_iA\_i 이상이도록 돌의 정령 무리를 배치하라는 퀘스트를 받았다.

퀘스트를 완료할 수 있도록 돌의 정령 무리를 배치해보자. 만약 가능한 경우가 여러 개 있다면 어떤 방법을 선택해도 좋다.

입력

첫째 줄에 돌의 정령 무리의 수 NN이 주어진다. (1≤N≤70,0001 \leq N \leq 70,000)

둘째 줄에 시야점수의 제한을 나타내는 크기 NN의 배열 AA가 주어진다. (−N≤A_i≤N-N \leq A\_i \leq N, A_i≠0A\_i \neq 0)

출력

조건을 만족하는 배치가 있다면, 돌의 정령 무리들의 키를 나타내는 배열을 한 줄에 출력한다. 배열의 ii번째 수는 왼쪽에서 ii번째에 놓인 돌의 정령 무리의 키와 같아야 한다. 조건을 만족하는 배치가 여러 개라면, 아무 배치나 출력하여라. 조건을 만족하는 배치가 없다면 -1을 출력한다.

예제2

  1. 예제 1

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

    입력
    7
    2 3 -1 2 4 5 -1
    
    예상 출력
    -1