슈퍼 학생
시간 제한1초메모리 제한1024 MB
유연한 수업 a개를 w일 중 하루에 배정하고 하루 최대 M개를 지키면서, 매일 1층에서 출발해 1층으로 돌아오는 총 이동 거리를 최소로 만든다.
문제
대전과학고등학교 학생들은 다양한 수업을 듣느라 매 수업마다 교실을 옮겨 다녀야 해서 큰 수고로움을 겪고 있다. 태완이는 대전과학고등학교의 학생으로, 오늘도 고된 학사일정을 끝내고 잠에 들었다.
태완이는 오늘 밤 특별한 꿈을 꾸었다. 꿈속에서 태완이는 슈퍼 학생이 되어 시간표를 자유롭게 짤 수 있는 능력을 얻었다.
대전과학고등학교의 수업 주기는 일주일 단위로 운영되며, 이 문제 상황에서 일주일은 일로 구성되어 있다. 태완이가 일주일 동안 들어야 하는 수업은 두 종류로 나뉜다.
- 유연한 수업: 일주일(일) 중 어느 요일이든 배정 가능한 수업 (총 개)
- 고정된 수업: 매주 특정 요일에만 배정 가능한 수업 (각 요일마다 개씩)
각 수업은 정해진 층에서만 진행되며, 이 층은 변경할 수 없다. 태완이는 매일 층에서 출발하여 그날의 모든 수업을 듣고 다시 층으로 돌아와야 한다.
태완이는 수업 사이를 이동할 때 계단을 이용한다. 현재 층에서 다음 수업이 있는 층까지의 이동 거리는 두 층 번호의 차이의 절댓값이다. 예를 들어, 층에서 층으로 이동하는 거리는 이다.
수업 배정 시 지켜야 할 점은 다음과 같다.
- 각 유연한 수업은 정확히 한 번만, 일주일(일) 중 한 요일에 배정되어야 한다.
- 모든 고정된 수업은 반드시 매주 지정된 요일에 들어야 한다. 마찬가지로 그 요일에 정확히 한 번 배정되어야 한다.
- 각 요일 내에서 수업의 순서는 자유롭게 정할 수 있다.
- 수업 사이에 빈 시간이 있다면, 다음 수업이 시작되기 전까지 또는 그날 일과가 끝나기 전까지 현재 층에서 대기한다.
- 각 요일에 배정할 수 있는 수업 개수는 그날에 배정된 유연한 수업과 고정된 수업을 모두 포함하여 개 이하다.
태완이는 일주일 동안 총 층간 이동 거리가 최소가 되도록 최적의 주간 시간표를 짜려고 한다. 이때 최소 총 층간 이동 거리를 구해 보자.
입력
첫째 줄에 네 개의 정수 이 공백으로 구분되어 주어진다. 조건에 맞게 시간표를 짤 수 있는 경우만 입력으로 주어진다. 구체적으로, 각 수의 제한조건은 다음과 같다.
다음 개의 줄에 걸쳐 번째 줄에는 번째 유연한 수업이 진행되는 층 번호 가 주어진다.
다음 개의 줄에 걸쳐 번째 줄에는 반드시 번째 요일에 배정되어야 하는 개의 고정된 수업이 진행되는 층 번호 가 공백으로 구분되어 주어진다.
출력
최적의 주간 시간표를 짰을 때, 태완이가 일주일 동안 이동해야 하는 최소 총 층간 이동 거리를 출력한다.