Informatica Online Judge

  지뢰찾기 #3 [1805 / 070D]

Time Limit(Test case) : 1000(ms)
Number of users who solved : 44   Total Tried : 45


The Champion of this Problem (C++) : gs17018 - ms / 454byte
My Best Submission (C++) : N/A

[koistudy.net (34th 김태영)]

Background

승한이는 학교 자습시간에 학습실에서 노트북으로 포켓몬을 하다가 사감 선생님한테 걸려서 노트북을 뺏긴 적이 있다.

2주의 압수 기간 후에 노트북을 돌려받은 승한이는 앞으로는 게임을 절대 하지 않겠다고 마음먹었지만 승한이는 게임이 너무 하고 싶어졌고, 지뢰 찾기는 게임에 걸리지 않을 것이라 생각하여 지뢰 찾기를 열심히 하였다.

승한이는 2차원 지뢰 찾기 보단 1차원 지뢰 찾기를 즐겨한다. 1차원 지뢰 찾기란, $N$개의 1차원 칸안에 지뢰들이 있고, 각 칸에는 자신의 왼쪽, 자신, 자신의 오른쪽에 있는 지뢰의 합을 보여주고, 지뢰들이 어느 위치에 몇 개가 있는지 맞추는 게임이다.

하지만 머리 쓰는 일이 귀찮았던 승한이는 정보가 주어지면 어느 위치에 지뢰가 몇 개 있는지를 출력하는 프로그램을 만들고 싶다. 승한이를 도와주자.

Input

입력의 1번째 줄에는 정수 $N$이 입력된다. $(1 <= N <= 100,000)$ - 칸의 개수

입력의 2번째 줄에는 $N$개의 정수 $A_i$ 가 입력된다. $(1 <= A_i <= 600)$ - 내 칸의 왼쪽, 자기 자신, 오른쪽에 있는 지뢰의 개수의 합

[입력값의 정의역]
#1 : 1 <= N <= 10
#2 : 지뢰는 항상 $0$개 또는 $1$개이다. 불가능한 경우는 주어지지 않는다.
#3 : $1 <= N <= 100,000$

Output

출력의 1번째 줄에는 $N$개의 정수 $C_i$를 출력한다 ($0 <= C_i <= 100$) - 그 칸에 있는 지뢰의 개수

만약 불가능한 경우 $“-1”$을 출력한다.

한 칸에 지뢰는 최대 $100$개 밖에 들어갈 수 없음에 유의하라.

단, 답이 여러 개일 경우, 첫 번째 칸의 값이 가장 작은 답안을 출력하여라.

IO Example

입력1
4
5 5 7 4

출력1
2 3 0 4

입력2
2
100 99

출력2
-1

Submit : [C/C++] | [C++11] | [Obj-C] | [Java] | [Python]
Prob Analysis : [Problem Statistics] | [Solution]