죄수 매수하기 (스몰)
면접 대비시간 제한5초메모리 제한512 MB
P개의 감방 중 Q명의 죄수를 석방하는 순서를 정해, 각 석방 때 빈 감방이나 끝에 닿을 때까지의 모든 죄수에게 주는 뇌물의 총합을 최소화한다.
문제
어느 왕국에 감옥 방 개가 일직선으로 늘어서 있고, 1번부터 번까지 번호가 붙어 있다. 번 방과 번 방은 서로 붙어 있고, 붙어 있는 두 방의 죄수는 이웃이다. 붙어 있는 방 사이의 벽에는 창이 뚫려 있어서 이웃끼리 창으로 이야기를 주고받는다.
죄수 한 명이 풀려나기 전까지는 모두 조용히 지낸다. 한 명이 풀려나면 그 방 양쪽의 이웃이 이를 알아채고, 각자 반대편 이웃에게 소식을 전한다. 소식을 받은 죄수는 다시 자기 반대편 이웃에게 전하고, 더 이상 이웃이 없는 죄수에게 닿을 때까지 소식이 이어진다. 1번 방에 있거나, 번 방에 있거나, 다음 방이 이미 비어 있으면 거기서 멈춘다. 누가 풀려났다는 소식을 들은 죄수는 금화 한 닢을 받지 못하면 화를 내며 방 안의 물건을 전부 부순다. 그래서 번 방의 죄수를 풀어 주면 번 방 양쪽으로 1번 방, 번 방, 또는 빈 방에 닿을 때까지 놓인 죄수를 모두 매수해야 한다.
처음에는 모든 방에 죄수가 정확히 한 명씩 있고, 하루에 한 명만 풀어 준다. 일 동안 풀어 줄 죄수 명이 주어질 때, 푸는 순서를 자유롭게 정해서 필요한 금화의 최소 개수를 구하라.
매수는 하루만 효력이 있다. 어제 매수한 죄수라도 오늘 다른 죄수가 풀려났다는 소식을 들으면 다시 매수해야 한다.
입력
첫 줄에 테스트 케이스의 수 이 주어진다. 이어서 테스트 케이스 개가 주어진다. 각 케이스는 두 줄이다. 첫 줄의 형식은 다음과 같다.
P Q
는 감옥 방의 수, 는 풀어 줄 죄수의 수다. 둘째 줄에는 풀어 줄 죄수가 있는 방 번호 개가 서로 다른 값으로, 오름차순으로, 공백으로 구분되어 주어진다.
제한
- 방 번호는 1 이상 이하다.
출력
각 테스트 케이스마다 다음 형식으로 한 줄씩 출력한다.
Case #X: C
는 1부터 시작하는 케이스 번호이고, 는 매수에 필요한 금화의 최소 개수다.
힌트
, 이고 방 번호가 3, 6, 14인 경우를 보자. 14번, 6번, 3번 순으로 풀어 주면 비용은 다. 6번, 3번, 14번 순으로 풀어 주면 이 된다.