만드는 중입니다

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

업&다운

면접 대비

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

요약
모든 카드를 한 줄로 놓으며 인접한 카드의 숫자 차이가 정확히 1이 되도록 순서를 정합니다. 가능한 순서가 없으면 -1을 출력합니다.
난이도

보통10점 중 5점

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

문제

당신의 손에 카드가 NN장 있고, 각 카드에는 양의 정수가 하나씩 쓰여 있다. 각 i(1≤i≤N)i(1\leq i\leq N)에 대해 ii번째 카드에는 양의 정수 XiX_i가 쓰여 있다. 같은 수가 적힌 카드가 여러 장 있을 수도 있다.

당신은 손에 있는 카드를 다음 규칙에 따라 탁자에 모두 놓아야 한다.

탁자에는 카드를 한 번에 한 장씩만 놓을 수 있다. 첫 카드는 아무거나 놓을 수 있지만, 두 번째 카드부터는 바로 이전에 놓은 카드에 적힌 수보다 1만큼 크거나 작은 카드만 놓을 수 있다. 가령, 처음에 3이 적힌 카드를 놓았으면 그다음에는 2 또는 4가 적힌 카드를 놓을 수 있고, 그 외의 카드는 놓지 못한다.

당신이 손에 든 카드의 정보가 주어졌을 때, 이 카드들을 주어진 규칙을 지키면서 탁자에 모두 놓을 수 있는 방법을 찾아라.

입력

첫째 줄에는 카드의 수 NN이 정수로 주어진다. (1≤N≤100 0001\leq N\leq 100\,000)

둘째 줄에는 각 카드에 적힌 수 X1,X2,⋯ ,XNX_1, X_2, \cdots, X_N이 공백으로 구분되어 주어진다. (1≤Xi≤100 0001\leq X_i\leq 100\,000)

출력

주어진 카드를 규칙을 지키면서 탁자에 모두 놓는 방법이 존재한다면, 카드를 내는 순서대로 총 NN개의 정수 Y1,Y2,⋯ ,YNY_1, Y_2, \cdots, Y_N을 공백으로 구분하여 출력한다. YiY_i는 ii번째로 탁자에 놓을 카드에 적힌 정수를 의미하며, X1,X2,⋯ ,XNX_1, X_2, \cdots, X_N을 오름차순 정렬한 결과와 Y1,Y2,⋯ ,YNY_1, Y_2, \cdots, Y_N을 오름차순 정렬한 결과는 같아야 한다. 가능한 방법이 여러 가지라면 그 중 아무거나 하나를 출력한다.

카드를 탁자에 모두 놓는 것이 불가능하면 -1을 출력한다.

예제2

  1. 예제 1

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

    입력
    4
    1 1 1 2
    
    예상 출력
    -1