| 시간 제한 | 메모리 제한 | 제출 | 정답 | 맞힌 사람 | 정답 비율 |
|---|---|---|---|---|---|
| 1 초 (추가 시간 없음) | 1024 MB | 90 | 53 | 49 | 63.636% |
대전과학고등학교 학생들은 다양한 수업을 듣느라 매 수업마다 교실을 옮겨 다녀야 해서 큰 수고로움을 겪고 있다. 태완이는 대전과학고등학교의 학생으로, 오늘도 고된 학사일정을 끝내고 잠에 들었다.
태완이는 오늘 밤 특별한 꿈을 꾸었다. 꿈속에서 태완이는 슈퍼 학생이 되어 시간표를 자유롭게 짤 수 있는 능력을 얻었다.
대전과학고등학교의 수업 주기는 일주일 단위로 운영되며, 이 문제 상황에서 일주일은 $w$일로 구성되어 있다. 태완이가 일주일 동안 들어야 하는 수업은 두 종류로 나뉜다.
각 수업은 정해진 층에서만 진행되며, 이 층은 변경할 수 없다. 태완이는 매일 1ドル$층에서 출발하여 그날의 모든 수업을 듣고 다시 1ドル$층으로 돌아와야 한다.
태완이는 수업 사이를 이동할 때 계단을 이용한다. 현재 층에서 다음 수업이 있는 층까지의 이동 거리는 두 층 번호의 차이의 절댓값이다. 예를 들어, 3ドル$층에서 7ドル$층으로 이동하는 거리는 $|7-3|=4$이다.
수업 배정 시 지켜야 할 점은 다음과 같다.
태완이는 일주일 동안 총 층간 이동 거리가 최소가 되도록 최적의 주간 시간표를 짜려고 한다. 이때 최소 총 층간 이동 거리를 구해 보자.
첫째 줄에 네 개의 정수 $a,b,w,M$이 공백으로 구분되어 주어진다. 조건에 맞게 시간표를 짤 수 있는 경우만 입력으로 주어진다. 구체적으로, 각 수의 제한조건은 다음과 같다.
다음 $a$개의 줄에 걸쳐 $i$번째 줄에는 $i$번째 유연한 수업이 진행되는 층 번호 $F_i$가 주어진다. $(1\le F_i\le 10^9)$
다음 $w$개의 줄에 걸쳐 $i$번째 줄에는 반드시 $i$번째 요일에 배정되어야 하는 $b$개의 고정된 수업이 진행되는 층 번호 $S_{i,1},...,S_{i,b}$가 공백으로 구분되어 주어진다. $(1\le S_{i,j}\le 10^9)$
최적의 주간 시간표를 짰을 때, 태완이가 일주일 동안 이동해야 하는 최소 총 층간 이동 거리를 출력한다.
4 1 4 2 1 5 3 3 4 4 1 2
18
유연한 수업은 1ドル$층, 5ドル$층, 3ドル$층, 3ドル$층에서 진행된다. 일주일(4ドル$일)의 각 요일별 고정된 수업은 다음과 같다.
최적의 주간 시간표의 한 예는 다음과 같다.
1ドル$요일: 4ドル$층(고정), 5ドル$층(유연) 순서로 배정
2ドル$요일: 4ドル$층(고정), 3ドル$층(유연) 순서로 배정
3ドル$요일: 1ドル$층(고정), 1ドル$층(유연) 순서로 배정
4ドル$요일: 3ドル$층(유연), 2ドル$층(고정) 순서로 배정
이 경우, 총 이동 거리는 8ドル+6+0+4=18$ 이다.
이보다 더 짧은 총 이동 거리로 배정할 수 있는 방법은 없다.
9 2 5 4 3 1 13 9 15 3 18 10 20 17 6 15 3 13 14 1 14 1 19
150
School > 대전과학고등학교 > 제2회 대전과학고등학교 프로그래밍 경진대회 DSHStack D번