방송국
시간 제한2.5초메모리 제한1024 MB
직선 위의 N개 방송국에서 h마다 h-center가 될 수 있는 방송국별 범위 제곱합의 최솟값을 구합니다.
문제
개의 방송국 이 직선 위에 있다. 방송국 의 위치는 양의 정수 로 주어진다. 각 방송국 에 방송 전파 범위 를 할당해야 한다. 방송국 가 방송하면, 로부터 거리 이내에 있는 방송국들은 의 방송 전파를 받을 수 있다. 즉, 방송국 가 닫힌구간 안에 있으면 는 의 방송 전파를 받을 수 있다. 방송국 의 방송은 ()개의 방송국이 이어서 전달해 방송국 에 닿을 수 있다. 즉, 방송국 이 존재하여 의 방송이 에 전달되고, 각 가 로 전달하고, 이 에 전달하면, 의 방송은 번 만에 에 전달될 수 있다. 물론 이면 의 방송이 에 직접 전달되는 경우이다. 이런 경우에 의 방송이 단계에 에 전달된다고 말한다. 우리는 방송국 중 하나를 골라 -집중국으로 정하고 싶다. 이 방송국은 방송하지 않고, 다른 모든 방송국의 방송을 많아야 단계 만에 받아야 한다. 이 방송국을 -집중국이라고 한다. -집중국의 방송 전파 범위는 으로 본다. 각 방송국 에 전파 범위 를 할당할 때, 할당 비용은 전파 범위 제곱의 합으로 정의한다. 즉, 비용은 이다. 이 비용이 최소가 되도록 전파 범위를 할당한다. 방송국 가 -집중국일 때 최소 할당 비용을 로 나타내면, 문제의 목표는 가능한 모든 -집중국 에 대한 중 최솟값을 찾는 것이다. 즉, 그 최솟값을 가지는 -집중국과 그 최소 비용을 주는 전파 범위 할당을 찾는다. 개 방송국의 위치가 주어질 때, 각 에 대해 가능한 모든 -집중국 의 최소 할당 비용 의 최솟값을 출력하는 프로그램을 작성하시오. 예를 들어, 아래 그림 1과 2는 개의 방송국 가 각각 좌표 에 위치하고 인 경우이다. 그림 1처럼 에 각각 의 전파 범위를 할당하면 가 -집중국인 경우의 최소 비용은 이다. 그림 2처럼 에 각각 의 전파 범위를 할당하면 이 -집중국인 경우의 최소 비용은 이다. 따라서 가능한 모든 -집중국의 최소 비용 중 최솟값은 이다.
그림 1
그림 2
구현
관리자를 위해 다음 함수를 구현해야 한다. void stations(int N, int X[]) ; 함수는 방송국 수 과 각 방송국의 위치를 나타내는 를 인자로 받는다. 여기서 는 크기가 인 벡터이고, 의 값은 모두 다르며 오름차순으로 저장되어 있다. stations() 함수 안에서는 다음 함수로 답을 제출해야 한다. void answer(long long Y[]) 함수는 크기 인 벡터 를 제출한다. 에 대해 의 값은 가능한 모든 -집중국의 최소 비용 중 최솟값이다. 이 함수는 stations() 함수 안에서 정확히 한 번 호출되어야 한다.
제한
,