공과 상자 게임
시간 제한2초메모리 제한1024 MB
상자들이 순열대로 공을 담고 있고, 두 번의 라운드에서 상자를 여는 비용을 지불해 열린 상자 사이에서 공을 자유롭게 옮길 수 있을 때, 항등 배치를 만드는 최소 비용을 구한다.
문제
개의 상자와 개의 공이 있다. 다음과 같은 게임을 한다.
상자는 부터 까지의 정수로, 공도 부터 까지의 정수로 번호가 매겨진다. 번 상자에는 처음에 번 공이 들어 있다.
각 상자는 열려 있거나 닫혀 있다. 처음에는 모든 상자가 닫혀 있다.
이후 두 번의 공 이동 라운드가 진행된다. 각 라운드에서 다음을 수행한다.
- 상자를 0개 이상 골라 연다. 첫 번째 라운드에서 번 상자를 열려면 개의 동전을, 두 번째 라운드에서 번 상자를 열려면 개의 동전을 낸다.
- 열린 상자 사이에서 공을 자유롭게 옮긴다. 단, 이동이 끝났을 때 각 상자에는 정확히 하나의 공이 들어 있어야 한다.
- 열린 상자를 모두 닫는다.
두 라운드가 끝난 뒤 각 에 대해 번 상자에 번 공이 들어 있어야 한다. 게임을 끝내기 위해 내야 하는 동전 합의 최솟값을 구한다.
입력
첫 번째 줄에 정수 이 주어진다. ()
두 번째 줄에 개의 정수 이 주어진다. 는 번 상자에 처음 들어 있던 공의 번호다. (, 이면 )
세 번째 줄에 개의 정수 이 주어진다. 는 첫 번째 라운드에서 번 상자를 여는 데 드는 비용이다. ()
네 번째 줄에 개의 정수 이 주어진다. 는 두 번째 라운드에서 번 상자를 여는 데 드는 비용이다. ()
출력
두 라운드가 끝난 뒤 각 에 대해 번 상자에 번 공이 들어 있도록 하기 위해 내야 하는 동전 합의 최솟값을 정수 하나로 출력한다.