최소 비용 증가 수열

|B_i - A_i|의 합이 최소가 되도록 수열 A를 순증가 정수 수열 B로 바꾸고, 그중 사전순으로 가장 작은 B를 출력한다.

어려움9동적 계획법그리디아직 제출이 없습니다시간 제한2초메모리 제한512 MB

문제

길이가 NN인 정수 수열 A1,A2,,ANA_1, A_2, \dots, A_N이 주어진다.

B1<B2<<BNB_1 < B_2 < \dots < B_N을 만족하는 정수 수열 BB 가운데 B1A1+B2A2++BNAN|B_1 - A_1| + |B_2 - A_2| + \dots + |B_N - A_N|을 최소로 만드는 것을 찾아야 한다. BB의 모든 원소는 32비트 부호 있는 정수 범위 안에 들어간다.

합을 최소로 만드는 BB는 여러 개일 수 있다. 그중 사전순으로 가장 앞서는 것을 출력한다. 즉 B1B_1을 될 수 있는 대로 작게 잡고, 그 값을 고정한 뒤 B2B_2를 될 수 있는 대로 작게 잡는 식으로 정한다.

입력

첫째 줄에 NN이 주어진다. (1N1061 \le N \le 10^6)

둘째 줄에 A1,A2,,ANA_1, A_2, \dots, A_N이 공백으로 구분되어 주어진다. (0Ai2×1090 \le A_i \le 2 \times 10^9)

출력

사전순으로 가장 앞서는 최적 수열 BBNN개의 줄에 한 원소씩 출력한다.

힌트

A={9,4,8,20,14,15,18}A = \{9, 4, 8, 20, 14, 15, 18\}일 때 합의 최솟값은 1313이다. 이 값을 만드는 BB는 하나가 아니어서 B={6,7,8,13,14,15,18}B = \{6, 7, 8, 13, 14, 15, 18\}의 합도 1313이다. 사전순으로 가장 앞서는 것은 B={3,4,8,13,14,15,18}B = \{3, 4, 8, 13, 14, 15, 18\}이다.