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

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

테러

면접 대비

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

요약
직선 위 N개 집 사이의 모든 거리를 오름차순으로 나열한 목록이 주어질 때, 첫 집을 0으로 고정하고 실제 위치를 복원한다.
난이도

어려움10점 중 8점

유형
백트래킹, 재귀, 정렬, 완전 탐색
정답자
아직 제출이 없습니다

문제

먼 옛날, 용산구 선린마을에는 수직선 위에 집 NN채가 자리하고 있었다.

왼쪽으로부터 순서대로 각 집의 위치는 P1,⋯ ,PNP_1, \cdots, P_N이었고, 가장 왼쪽에 있는 집의 위치 P1P_1은 00이었다.

어느 날 정휘는 선린마을에 있는 서로 다른 두 집 사이의 거리를 모두 측정했다.

즉, 모든 1≤i<j≤N1 \le i < j \le N에 대해, ii번째 집과 jj번째 집의 거리인 Pj−PiP_j - P_i를 측정했다.

예를 들어, 4개의 집의 위치가 각각 0,1,3,40, 1, 3, 4에 있었다면, 정휘는 집들 사이의 거리인 1−0=11-0=1, 3−0=33-0=3, 3−1=23-1=2, 4−0=44-0=4, 4−1=34-1=3, 4−3=14-3=1을 각각 측정했다.

그리고 정휘는 결과들을 정렬해서 6개의 수 1,1,2,3,3,41, 1, 2, 3, 3, 4를 기록해두었다.

하지만 오늘, 여러분이 천하제일 코딩대회를 치는 사이, 극단 원리주의 민초파 김준원이 선린마을의 집들을 모두 파괴했다.

여러분은 정휘가 기록해놓은 N(N−1)/2N(N-1)/2개의 수를 이용해 선린마을의 집을 복원해야 한다.

입력

첫째 줄에 선린마을에 있던 집의 개수 NN이 주어진다.

둘째 줄에 정휘가 측정한 N(N−1)/2N(N-1)/2 개의 거리를 오름차순으로 정렬한 결과 D1,D2,⋯ ,DN(N−1)/2D_1, D_2, \cdots , D_{N(N-1)/2}가 공백으로 구분되어 주어진다.

출력

입력을 토대로 복원한 선린마을의 집들의 위치를 나타내는 NN개의 정수 P1,P2,⋯ ,PNP_1, P_2, \cdots , P_N을 공백으로 구분해 출력하라.

여러분이 복원한 집들의 위치가,

  • P1=0P_1 = 0
  • P1<P2<⋯<PNP_1 < P_2 < \cdots < P_N
  • 모든 1≤i<j≤N1 \le i < j \le N에 대해 Pj−PiP_j - P_i의 값들을 모은 N(N−1)/2N(N-1)/2개의 수들을 오름차순으로 정렬하면, 입력으로 주어진 D1,⋯ ,DN(N−1)/2D_1, \cdots , D_{N(N-1)/2}과 같다.

를 모두 만족하면 정답으로 인정된다.

제한

  • 2≤N≤202 \leq N \leq 20
  • 1≤Di≤1 000 000 0001 \le D_i \le 1\,000\,000\,000 (1≤i≤N(N−1)/21 \le i \le N(N-1)/2)
  • Di≤Di+1D_i \le D_{i+1} (1≤i<N(N−1)/21 \le i < N(N-1)/2). 즉, D1,⋯ ,DN(N−1)/2D_1, \cdots, D_{N(N-1)/2}는 오름차순으로 정렬되어 있다.
  • 조건을 만족하도록 집들의 위치를 복원할 수 있다.

예제2

  1. 예제 1

    입력
    2
    2
    
    예상 출력
    0 2
    
  2. 예제 2

    입력
    3
    1 2 3
    
    예상 출력
    0 1 3