우편 배달
시간 제한2초메모리 제한512 MB
수직선 위 여러 좌표에 배달할 편지 수와 트럭 용량 K가 주어질 때, 모든 편지를 배달하고 출발점으로 돌아오는 최소 총 이동 거리를 구한다.
문제
우체국은 우편 요금을 올리는 대신 비용을 줄이는 방법을 찾고 있다. 한 가지 방법은 우체국에서 출발해 필요한 모든 배달지에 우편물을 전달하고 우체국으로 돌아오기까지의 총 이동 거리를 최소화하는 것이다. 배달할 우편물이 트럭에 한 번에 다 실리지 않을 수도 있으므로, 이동 거리에는 다시 싣기 위해 우체국으로 돌아오는 거리도 포함된다.
문제를 단순하게 만들기 위해 세계가 1차원이라고 가정한다. 우체국은 수직선의 원점 에 있고, 각 배달지는 정수 좌표 하나로 나타난다. 트럭은 편지를 한 번에 최대 통까지 싣고, 매번 우체국에서 출발해 우체국으로 돌아온다. 한 번 나갈 때 여러 배달지를 방문해도 되고, 지나가는 배달지에 실은 편지의 일부만 내려놓아도 된다. 이동 거리는 트럭이 수직선 위에서 움직인 거리의 합이다.
트럭 용량이 통이고 좌표 에 통, 좌표 에 통, 좌표 에 통을 배달해야 하는 경우를 보자. 가장 효율적인 계획은 이렇다. 먼저 통을 좌표 에 배달한다(). 다음으로 통을 좌표 에 배달한다(). 마지막으로 좌표 에 남은 통과 좌표 에 갈 통을 함께 싣고 나가, 가는 길에 통을 내려놓고 좌표 까지 갔다 온다(). 총 이동 거리는 이다.
모든 편지를 배달하고 우체국으로 돌아오는 데 필요한 최소 총 이동 거리를 구하라.
입력
첫 줄에 두 정수 과 가 주어진다. 은 배달지의 수로 이고, 는 트럭의 적재 용량으로 이다.
이어지는 개의 줄에는 각각 두 정수 와 가 주어진다. 는 배달지의 좌표이고 는 그 배달지에 전달할 편지 수이다. 모든 에 대해 이고 이다. 배달지 좌표는 모두 이 아니다. 즉 우체국 자리에 있는 배달지는 없다.
출력
모든 편지를 배달하고 우체국으로 돌아오는 데 필요한 최소 총 이동 거리를 한 줄에 출력한다.