두더지 굴
시간 제한2초메모리 제한512 MB
이진 힙 모양 트리에서 정해진 순서로 깨어나는 각 두더지를 남은 음식 용량이 있는 구멍에 배정해 총 이동 거리를 최소화하고, 각 접두사 k에 대한 최솟값을 구한다.
문제
두더지는 굴 사이를 오가려고 터널을 판다. 이 문제에서 다루는 터널망은 굴 개와 굴을 잇는 터널 개로 이루어진다. 굴에는 번부터 번까지 번호를 붙인다. 보다 큰 모든 에 대해 번 굴은 번 굴과 터널 하나로 이어져 있다. 터널은 양쪽 방향으로 모두 지날 수 있다.
굴 에는 먹이가 만큼 있고, 이는 두더지 정확히 마리가 먹을 수 있는 양이다.
터널망에는 두더지 마리가 산다. 두더지 가 지금 자고 있는 굴의 번호는 다. 아침이 되면 앞에서부터 마리가 깨어나 먹이를 찾고, 나머지 마리는 계속 잔다. 깨어난 두더지는 각자 굴 하나를 골라 그 굴까지 기어간다. 두더지 한 마리의 이동 거리는 출발한 굴에서 도착한 굴까지 가면서 지나간 터널의 개수다. 깨어난 두더지는 영리해서 이동 거리의 합을 최소로 만든다.
이동이 모두 끝났을 때 굴 에 있는 깨어난 두더지는 마리를 넘지 않아야 한다. 즉 깨어난 두더지는 모두 먹이를 먹어야 한다.
부터 까지 각각에 대해 이동 거리 합의 최솟값을 구하라. 깨어난 두더지가 모두 먹이를 먹는 방법은 항상 존재한다.
입력
첫째 줄에 굴의 개수 과 두더지의 수 이 주어진다. ()
둘째 줄에 굴의 먹이 양 이 주어진다. ()
셋째 줄에 두더지가 자고 있는 굴의 번호 이 주어진다. ()
먹이의 총합 은 이상이다.
출력
한 줄에 정수 개를 공백 하나로 구분해 출력한다. 번째 수는 앞에서부터 마리가 깨어났을 때 이동 거리 합의 최솟값이다.
노트

그림의 점선 화살표는 이동 거리의 합이 최소가 되는 이동 방법 하나를 보여 준다. 굴 5개와 두더지 4마리가 있는 예제에서 일 때 첫 번째 두더지는 2번 굴에서 5번 굴로 가고, 두 번째 두더지는 4번 굴에 그대로 머문다.