수들의 합 3

시간 제한2초메모리 제한128 MB

요약
N개의 숨겨진 정수들의 모든 쌍의 합이 순서 없이 주어졌을 때, 그 합의 다중집합을 정확히 만드는 사전순으로 가장 작은 비내림 수열을 복원합니다.
난이도

보통10점 중 7점

유형
정렬, 수학, 완전 탐색, 그리디
정답자
아직 제출이 없습니다

문제

NN개의 정수가 있다. 서로 다른 두 위치의 수를 하나씩 짝지어 더하면 모두 N(N−1)2\frac{N(N-1)}{2}개의 합을 얻는다. 이렇게 얻은 N(N−1)2\frac{N(N-1)}{2}개의 합이 주어질 때, 원래의 NN개의 수를 복원하는 프로그램을 작성하시오.

입력

첫째 줄에 정수 NN (2≤N≤1002 \le N \le 100)이 주어진다.

둘째 줄에 N(N−1)2\frac{N(N-1)}{2}개의 합이 공백으로 구분되어 주어진다. 각 합은 절댓값이 1 000 0001\,000\,000 이하인 정수이며, 주어지는 순서는 정해져 있지 않다.

출력

주어진 합들을 정확히 만들어 내는 원래의 NN개의 수를 비내림차순으로 정렬하여 한 줄에 공백으로 구분해 출력한다.

조건을 만족하는 수열이 여러 개이면, 그중 사전순으로 가장 앞서는 수열 하나만 출력한다. (비내림차순으로 나열한 두 수열을 앞에서부터 한 자리씩 비교하여, 처음으로 달라지는 위치의 수가 더 작은 쪽이 사전순으로 앞선다.)

출력하는 각 정수는 −100 000 000-100\,000\,000 이상 100 000 000100\,000\,000 이하이어야 한다. 이 범위 안에서 조건을 만족하는 수열이 하나도 없으면 Impossible을 출력한다.

예제4

  1. 예제 1

    입력
    3
    1269 1160 1663
    
    예상 출력
    383 777 886
    
  2. 예제 2

    입력
    3
    1 7 3
    
    예상 출력
    Impossible
    
  3. 예제 3

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

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