죄수에게 주는 뇌물
면접 대비시간 제한2초메모리 제한512 MB
P개의 감방 중 지정된 Q명의 죄수를 풀어줄 때, 소문이 닿는 이웃 죄수에게 주는 뇌물의 총합이 최소가 되는 순서를 찾아 그 최솟값을 구한다.
문제
감옥에 방 개가 한 줄로 늘어서 있다. 왼쪽 방부터 차례로 번이다. 모든 방은 독방이고 각 방에 죄수 한 명이 수감되어 있다. 이웃한 두 방 사이에는 창문이 있어서 옆방 죄수와 이야기를 주고받는다.
어떤 방의 죄수를 석방하면 바로 옆방 죄수가 그 사실을 알고 난동을 부린다. 그래서 한 명을 석방할 때는 양옆 방의 죄수에게 각각 금화 한 장을 뇌물로 줘야 한다. 소식은 창문을 거쳐 계속 옆으로 전해지므로, 소식이 닿는 죄수 전원에게 금화를 줘야 한다. 이미 비어 있는 방에는 소식을 전할 죄수가 없으니 소식은 그 방에서 끊긴다.
오늘 번 방에 있는 죄수 명을 석방한다. 석방하는 순서에 따라 드는 금화가 달라진다. 금화를 가장 적게 쓰는 순서를 찾아 그때 필요한 금화의 개수를 구하자.
입력
첫째 줄에 정수 와 가 공백으로 구분되어 주어진다. (, , )
둘째 줄에 정수 개 가 공백으로 구분되어 주어진다. 각 수는 석방할 죄수의 방 번호이고, 같은 번호가 두 번 주어지는 경우는 없다. ()
출력
죄수 명을 모두 석방할 때 드는 금화의 최소 개수를 한 줄에 출력한다.