일직선 상에 보호해야 하는 유닛 개의 위치와 쉴드 생성기를 설치할 수 있는 개의 후보지가 있다. 일직선 상의 위치는 자연수 좌표로 표시된다고 한다.
위치 에 있는 특정한 후보지에 쉴드 생성기를 설치하고 그 범위를 로 설정하면 범위 에 있는 유닛을 모두 보호할 수 있다. 범위의 끝에 있는 유닛도 보호된다. 서로 다른 쉴드 생성기의 범위가 겹치는 것이 허용된다.
당신은 후보지들 중 개를 선택하여 쉴드 생성기를 설치할 수 있다. 각 쉴드 생성기의 범위는 다르게 설정할 수 있다고 한다.
모든 유닛들을 보호하기 위해서 개의 쉴드 생성기를 설치하고 그 범위들의 합을 최소화하는 프로그램을 작성하라.
입력 형식
첫째 줄에 후보지의 개수 , 유닛의 개수 , 설치할 수 있는 쉴드 생성기의 개수 가 주어진다. (, )
다음 줄에 후보지의 위치들이 개의 정수로 주어진다.
그 다음 줄에 유닛의 위치들이 개의 정수로 주어진다. 후보지들의 위치는 모두 다르고, 유닛들의 위치도 모두 다르다. 후보지와 유닛이 같은 위치에 있는 경우도 없다. 주어지는 위치는 모두 이상 이하이다.
출력 형식
개의 쉴드 생성기를 설치했을 때 가능한 최소의 범위 합을 정수로 출력한다.
예제 1
입력
4 3 1 20 50 55 73 17 23 46
출력
26
예제 2
입력
4 3 2 20 50 55 73 17 23 46
출력
7
채점 방식
입력 케이스들은 다음과 같은 종류로 구별되며, 한 종류의 케이스를 다 맞추어야 그 종류에 배정된 점수를 받을 수 있다.
종류 1: 15점
.
종류 2: 70점
.
종류 3: 115점
추가 제약조건 없음.
해설
경우의 수가 많은 문제처럼 보이지만 동적 계획법을 이용하면 빠른 시간에 계산이 가능하다. 왼쪽부터 특정 위치까지를 개의 쉴드로 보호한 비용을 계산하였다고 가정하고, 그 다음 자리에 위치한 쉴드가 하나를 보호하는 경우, 두개를 보호하는 경우, 세개를 보호하는 경우들을 모두 따지면서 비용을 업데이트할 수 있다.