만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

방송국

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

요약
직선 위의 N개 방송국에서 h마다 h-center가 될 수 있는 방송국별 범위 제곱합의 최솟값을 구합니다.
난이도

보통10점 중 7점

유형
동적 계획법, 수학
정답자
아직 제출이 없습니다

문제

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_i−r_i,x_i+r_i][x\_i-r\_i,x\_i+r\_i] 안에 있으면 s_js\_j는 s_is\_i의 방송 전파를 받을 수 있다. 방송국 s_is\_i의 방송은 h−1h-1 (h>1h > 1)개의 방송국이 이어서 전달해 방송국 s_js\_j에 닿을 수 있다. 즉, 방송국 s_i_1,s_i_2,…,s_i_h−1s\_{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_h−1s\_{i\_{h-1}}이 s_js\_j에 전달하면, s_is\_i의 방송은 hh번 만에 s_js\_j에 전달될 수 있다. 물론 h=1h=1이면 s_is\_i의 방송이 s_js\_j에 직접 전달되는 경우이다. 이런 경우에 s_is\_i의 방송이 hh단계에 s_js\_j에 전달된다고 말한다. 우리는 방송국 중 하나를 골라 hh-집중국으로 정하고 싶다. 이 방송국은 방송하지 않고, 다른 모든 방송국의 방송을 많아야 hh단계 만에 받아야 한다. 이 방송국을 hh-집중국이라고 한다. hh-집중국의 방송 전파 범위는 00으로 본다. 각 방송국 s_is\_i에 전파 범위 r_ir\_i를 할당할 때, 할당 비용은 전파 범위 제곱의 합으로 정의한다. 즉, 비용은 ∑_i=1Nr_i2\sum\_{i=1}^{N}{r\_i^2}이다. 이 비용이 최소가 되도록 전파 범위를 할당한다. 방송국 ss가 hh-집중국일 때 최소 할당 비용을 C_h\*(s)C\_h^\*(s)로 나타내면, 문제의 목표는 가능한 모든 hh-집중국 ss에 대한 C_h\*(s)C\_h^\*(s) 중 최솟값을 찾는 것이다. 즉, 그 최솟값을 가지는 hh-집중국과 그 최소 비용을 주는 전파 범위 할당을 찾는다. NN개 방송국의 위치가 주어질 때, 각 h=1,2,…,N−1h=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\_5가 hh-집중국인 경우의 최소 비용은 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\_3이 hh-집중국인 경우의 최소 비용은 1818이다. 따라서 가능한 모든 hh-집중국의 최소 비용 중 최솟값은 1818이다. 그림 1 그림 2

구현

관리자를 위해 다음 함수를 구현해야 한다. void stations(int N, int X[]) ; 함수는 방송국 수 NN과 각 방송국의 위치를 나타내는 X\[0..N−1]X\[0..N-1]를 인자로 받는다. 여기서 X\[]X\[]는 크기가 NN인 벡터이고, X\[i]X\[i]의 값은 모두 다르며 오름차순으로 저장되어 있다. stations() 함수 안에서는 다음 함수로 답을 제출해야 한다. void answer(long long Y[]) 함수는 크기 N−1N-1인 벡터 Y\[]Y\[]를 제출한다. i=0,…,N−2i=0,\dots,N-2에 대해 Y\[i]Y\[i]의 값은 가능한 모든 (i+1)(i+1)-집중국의 최소 비용 중 최솟값이다. 이 함수는 stations() 함수 안에서 정확히 한 번 호출되어야 한다.

제한

2≤N≤1202 \le N \le 120, 1≤x_1<x_2<⋯<x_N≤1081 \le x\_1 < x\_2 < \cdots < x\_N \le 10^8

예제2

  1. 예제 1

    입력
    3
    1 3 8
    
    예상 출력
    29
    29
    
  2. 예제 2

    입력
    5
    1 3 4 6 9
    
    예상 출력
    39
    18
    18
    18