참새

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

요약
각 참새가 운 횟수가 주어졌을 때, 왼쪽을 보는 참새는 왼쪽의 오른쪽 보는 참새 수만큼 울고 그 반대도 성립하는 방향 배열을 복원한다.
난이도

보통10점 중 7점

유형
배열, 그리디, 누적 합
정답자
아직 제출이 없습니다

문제

전깃줄 위에 일렬로 NN마리의 참새가 앉아 있다. 왼쪽에서부터 1,2,3,…,N1, 2, 3, \dots , N번 참새이다. 각 참새는 오른쪽 또는 왼쪽을 바라보고 있다.

참새는 특정한 규칙에 따라 운다.

  • ii번 참새가 왼쪽을 바라보고 있다면, 자신보다 왼쪽에 있으면서 오른쪽을 바라보는 참새의 수만큼 운다.
  • ii번 참새가 오른쪽을 바라보고 있다면, 자신보다 오른쪽에 있으면서 왼쪽을 바라보는 참새의 수만큼 운다.

각 참새가 운 횟수가 주어졌을 때, 참새의 방향을 복원하라.

입력

첫째 줄에 참새의 수를 나타내는 정수 N(1≤N≤106)N (1 \leq N \leq 10^6)이 주어진다.

둘째 줄에 각 참새가 운 횟수 A_1,A_2,…,A_N(1≤A_i≤N)A\_1, A\_2, \dots , A\_N (1 \leq A\_i \leq N)이 공백을 사이에 두고 주어진다.

출력

가능한 참새의 배치가 존재한다면, 길이 NN의 00과 11로 이루어진 배열을 출력한다.

ii번째 수가 00이라면 왼쪽을, 11이라면 오른쪽을 바라보고 있음을 뜻한다.

가능한 배치가 여러 개라면 아무거나 출력한다. 불가능하다면 −1-1을 출력한다.

예제6

  1. 예제 1

    입력
    5
    3 1 1 1 2
    
    예상 출력
    1 0 0 1 0
    
  2. 예제 2

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

    입력
    4
    1 1 1 3
    
    예상 출력
    1 1 1 0
    
  4. 예제 4

    입력
    1
    1
    
    예상 출력
    -1
    
  5. 예제 5

    입력
    20
    8 8 2 2 6 6 4 5 5 6 4 7 3 3 9 2 2 11 1 1
    
    예상 출력
    -1
    
  6. 예제 6

    입력
    20
    10 1 9 2 2 7 7 4 4 5 5 4 6 3 7 2 2 9 1 10
    
    예상 출력
    1 0 1 0 0 1 1 0 0 1 0 1 0 1 0 1 1 0 1 0