소 고르게 배치하기
면접 대비시간 제한1초메모리 제한128 MB
소 N마리를 S개의 축사에 배치하되 인접한 소 사이 거리가 D 또는 D+1이 되고 D인 거리가 최대가 되도록 옮길 때, 처음 위치에서 이동한 총 거리의 최솟값을 구한다.
문제
농부 존은 번부터 번까지 번호가 매겨진 젖소 마리를 기르고 있습니다. 새로 칠한 외양간에는 번부터 번까지 번호가 매겨진 칸이 한 줄로 놓여 있으며, 이웃한 두 칸 사이의 거리는 모두 입니다.
소들은 쉬려고 칸으로 들어갔습니다. 번 소는 번 칸에 있습니다. 소들은 서로 너무 가까이 있으면 예민해지기 때문에, 존은 소들을 최대한 넓게 퍼뜨리려고 합니다.
존은 인접한 두 소 사이의 개의 거리를 가능한 한 크게, 그리고 서로 비슷하게(거의 같은 간격으로) 만들고 싶어 합니다. 구체적으로 (정수 나눗셈)라고 할 때, 인접한 소 사이의 모든 거리는 와의 차이가 최대 이어야 하며, 그중 정확히 와 같은 거리가 가능한 한 많아야 합니다.
예를 들어 소가 마리이고 칸이 개라면 소를 또는 에 놓을 수는 있지만, 이나 에는 놓을 수 없습니다.
이렇게 소들을 배치하기 위해 소들이 움직여야 하는 최소 총 이동 거리를 구하세요. 소가 칸에 들어가고 나오는 거리는 무시합니다.
입력
- 첫째 줄: 두 정수 과 가 공백으로 구분되어 주어집니다.
- 둘째 줄부터 째 줄까지: 째 줄에 정수 가 하나씩 주어집니다.
제약: , , .
출력
- 첫째 줄에 소들이 움직여야 하는 최소 총 이동 거리를 정수 하나로 출력합니다. 이 값은 항상 1,000,000,000 미만이며 부호 있는 32비트 정수에 충분히 들어갑니다.
힌트
아래 그림은 소 마리를 칸 개에 배치하는 상황(처음 위치 )을 보여 줍니다.
1 2 3 4 5 6 7 8 9 10
Cow Locs | A | B | C | . | . | . | . | D | E | . |
소는 번 칸에서 번, 번에서 번, 번에서 번으로 이동합니다. 총 이동 거리는 입니다. 소들의 최종 위치는 번 칸입니다.
1 2 3 4 5 6 7 8 9 10
Init Stall | A | B | C | . | . | . | . | D | E | . |
Final Stall | A | . | B | . | C | . | . | D | . | E |
Distance moved | 0 | . | 1 | . | 2 | . | . | 0 | . | 1 |