방송국

아직 제출이 없습니다시간 제한2.5초메모리 제한1024 MB

문제

NN개의 방송국들, s_1,s_2,,s_Ns\_1, s\_2, \dots, s\_N이 직선 위에 위치한다. 방송국 s_is\_i의 위치는 양의 정수 x_ix\_i로 주어지고, 여러분은 각각의 방송국 s_is\_i에 대해 방송 전파의 범위 r_ir\_i를 할당해야 한다. 방송국 s_is\_i가 방송을 하면 s_is\_i로부터 거리 r_ir\_i안의 방송국들은 s_is\_i의 방송 전파를 받을 수 있다. 다시 말해서, 방송국 s_js\_j가 닫힌구간 \[x_ir_i,x_i+r_i]\[x\_i-r\_i,x\_i+r\_i]안에 위치하면 s_js\_js_is\_i의 방송 전파를 받을 수 있다.

방송국 s_is\_i의 방송은 h1h-1 (h>1h > 1)개의 방송국들이 이어 전달해서 방송국 s_js\_j에 전달 될 수 있다. 다시 말해서, 방송국 s_i_1,s_i_2,,s_i_h1s\_{i\_1}, s\_{i\_2}, \dots, s\_{i\_{h-1}}이 존재해서, s_is\_i의 방송을 s_i_1s\_{i\_1}에 전달하고, 각 s_i_ks\_{i\_k}s_i_k+1s\_{i\_{k+1}}로 전달하고, s_i_h1s\_{i\_{h-1}}s_js\_j에 전달해서 hh번 만에 s_is\_i의 방송이 s_js\_j에 전달될 수 있다. 물론 h=1h=1인 경우 는 s_is\_i의 방송이 직접 s_js\_j에 전달되는 경우이다. 이런 경우들에 대해 s_is\_i의 방송이 hh-단계에 s_js\_j에 전달된다고 말한다.

우리는 방송국들 중에 하나의 방송국을 정하고 싶다. 이 방송국은 방송하지 않고 단지 다른 모든 방송국들로부터 많아야 hh-단계 만에 그들의 방송을 받아야 한다. 이 방송국을 hh-집중국 이라고 한다. hh-집중국의 방송 전파 범위는 00이라 할 수 있다.

각 방송국 s_is\_i에 전파 범위 r_ir\_i를 할당할 때, 할당 비용을 전파 범위의 제곱의 합으로 정의한다. 다시 말해서 비용은 _i=1Nr_i2\displaystyle\sum\_{i=1}^{N}{r\_i^2}로 주어진다. 우리는 이 비용이 최소가 되도록 전파 범위들을 할당할 것이다. 방송국 sshh-집중국인 경우에 최소 할당 비용을 C_h\*(s)C\_h^\*(s)로 나타내면, 문제의 목표는 모든 가능한 hh-집중국 ss의 최소 할당 비용 C_h\*(s)C\_h^\*(s)들 중 최솟값을 가지는 hh-집중국과 그 최소비용을 주는 전파 범위 할당을 찾는 것이다.

NN개 방송국들의 위치가 주어질 때, 각 h=1,2,,N1h=1, 2, \dots, N-1에 대해서, 모든 가능한 hh-집중국 ss의 최소 할당 비용 C_h\*(s)C\_h^\*(s)의 최솟값을 출력하는 프로그램을 작성하시오.

예를 들어, 아래 그림 1과 2는 55개의 방송국 s_1,,s_5s\_1, \dots, s\_5가 각각 좌표 1,3,4,6,91, 3, 4, 6, 9에 위치하고 h=2h=2인 경우이다. 이 때, 그림 1처럼 s_1,s_2,s_3,s_4s\_1, s\_2, s\_3, s\_4에 각각 3,1,5,23, 1, 5, 2의 전파 범위를 할당할 때 s_5s\_5hh-집중국인 경우의 최소 비용 3939를 가진다. 그림 2처럼 s_1,s_2,s_4,s_5s\_1, s\_2, s\_4, s\_5에 각각 2,1,2,32, 1, 2, 3의 전파 범위를 할당할 때 s_3s\_3hh-집중국인 경우의 최소 비용 1818을 가진다. 그러면 1818이 모든 가능한 hh-집중국들에 대한 최소 비용들 중 최솟값이다.

그림 1

그림 2

여러분은 관리자를 위해 다음 한 가지 함수를 구현해야만 한다.

  • void stations(int N, int X[]) ; 방송국들의 개수 NN, 각 방송국의 위치를 나타내는 X\[0..N1]X\[0..N-1]를 인자로 받는다. 여기서, X\[]X\[]는 크기 NN인 벡터(vector)이고, X\[i]X\[i]의 값은 모두 다르고 오름차순으로 저장되어 있다.

여러분은 stations() 함수 안에서 다음 함수를 사용하여 답을 제출하여야 한다.

  • void answer(long long Y[]) : 크기 N1N-1인 벡터 Y\[]Y\[]를 제출하는 함수이다. i=0,,N2i=0,\dots, N-2에 대해서, Y\[i]Y\[i]의 값은 모든 가능한 (i+1)(i+1)-집중국들의 최소비용의 최솟 값이다. 이 함수는 stations() 함수 안에서 정확히 한 번 호출되어야 한다.

제한

  • 2N1202 \le N \le 120
  • 1x_1<x_2<<x_N1081 \le x\_1 < x\_2 < \cdots < x\_N \le 10^8