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

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

Swap the elements

면접 대비

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

요약
수열이 주어질 때 두 원소를 서로 바꾸는 연산만으로 모든 위치에서 원래 값과 다른 수열을 만들 수 있는지 판정하고, 가능하면 하나를 출력한다.
난이도

보통10점 중 5점

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

문제

길이가 NN인 정수로 이루어진 수열 A_1,A_2,⋯ ,A_NA\_1,A\_2, \cdots, A\_N이 주어진다. 

위 수열의 원소 중에 서로 다른 두 원소를 골라 위치를 바꾸는 연산을 원하는 만큼 시행하여 새로운 수열 B_1,B_2,⋯ ,B_NB\_1,B\_2, \cdots, B\_N 을 만들려고 한다.

모든 ii(1≤i ≤N1 \le i \le N)에 대해 A_i≠ B_iA\_i ≠ B\_i인 수열 B_1,B_2,⋯ ,B_NB\_1,B\_2, \cdots, B\_N을 만들 수 있을까?

입력

첫째 줄에 NN이 주어진다. (1≤N ≤5,0001 \le N \le 5\\,000)

둘째 줄에 NN개의 정수 A_1,A_2,⋯ ,A_NA\_1,A\_2, \cdots, A\_N가 주어진다. (1≤A_i ≤100,0001 \le A\_i \le 100\\,000)

출력

조건을 만족하는 수열 B_1,B_2,⋯ ,B_NB\_1,B\_2, \cdots, B\_N을 만들 수 없다면 첫째 줄에 -1을 출력한다.

만들 수 있다면, 첫째 줄에 B_1,B_2,⋯ ,B_NB\_1,B\_2, \cdots, B\_N을 아무거나 하나 출력한다.

예제3

  1. 예제 1

    입력
    4
    1 1 2 2
    
    예상 출력
    2 2 1 1
    
  2. 예제 2

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

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