도시 자전거
시간 제한2초메모리 제한2048 MB
트럭은 최대 c대까지 자전거를 싣고 n개 정거장을 차례로 방문합니다. 정거장마다 최대 d대까지 둘 수 있을 때, 가장 많은 곳과 가장 적은 곳의 차이를 최소로 만드는 값을 구합니다.
문제
도시 자전거는 널리 쓰이는 출퇴근 수단이다. 일부 거치대에는 자전거가 몇 대뿐이고 다른 거치대는 거의 가득 차 빈 자리가 거의 없어서, 이용자에게 불편을 준다. 자전거 회사는 이런 편차를 줄이려고 정기적으로 트럭을 보내 거치대 사이에서 자전거를 옮긴다.
트럭 한 대가 자전거 센터를 떠나 재배치 운행을 시작하려 한다. 트럭은 최대 대의 자전거를 실을 수 있다. 출발 전에 트럭은 초기 적재량을 대 이상 대 이하로 고를 수 있다. 이후 트럭은 개의 거치대를 순서대로 방문한다. 각 거치대는 최대 대의 자전거를 거치할 수 있고, 운행 시작 시점에 각 거치대에는 이미 자전거가 일부 거치되어 있다. 트럭은 각 거치대에서 트럭의 용량 와 거치대의 용량 를 넘지 않는 범위 안에서 자전거를 원하는 만큼 싣거나 내릴 수 있다. 운행이 끝났을 때 트럭의 적재량이 초기 적재량과 같을 필요는 없다. 목표는 어떤 거치대든 자전거 수의 최댓값과 최솟값의 차이를 최소화하는 것이다.
달성할 수 있는 최소 차이는 얼마인가?
입력
첫 번째 줄에 세 정수 , , (, )가 주어진다. 각각 거치대의 개수, 거치대의 용량, 트럭의 용량이다. 이어지는 개의 줄에는 각각 이상 이하의 정수 하나가 주어지며, 번째 값은 거치대 에 처음 거치된 자전거 수다.
출력
달성할 수 있는 최소 차이를 정수 하나로 출력한다. 차이는 어떤 거치대든 자전거 수의 최댓값과 최솟값의 차이를 뜻한다.