아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

평탄화

면접 대비

시간 제한1초메모리 제한128 MB

요약
이웃한 더미로 칩을 옮기고 옮긴 칩 수만큼 비용을 낼 때, 모든 더미를 같게 만드는 최소 총 이동량을 구한다.
난이도

보통10점 중 6점

유형
동적 계획법, 그리디, 수학, 누적 합
정답자
아직 제출이 없습니다

문제

NN개의 더미가 한 줄로 놓여 있고, 각 더미에는 0개 이상의 칩이 들어 있다. 더미는 왼쪽부터 11번, 22번, ..., NN번으로 번호가 매겨진다.

한 번의 이동(move) 이란 더미 하나 pp와 정수 mm을 골라, 더미 pp에서 이웃한 각 더미로 칩을 mm개씩 옮기는 것이다.

  • 1<p<N1 < p < N 이면 더미 pp의 이웃은 p−1p-1과 p+1p+1, 두 개다.
  • p=1p = 1 이면 이웃은 22번 더미 하나뿐이다.
  • p=Np = N 이면 이웃은 N−1N-1번 더미 하나뿐이다.

따라서 이웃이 둘인 더미에서 이동하려면 양쪽에 mm개씩 보내야 하므로 더미 pp에 칩이 최소 2m2m개 있어야 하고, 이웃이 하나뿐인 더미에서는 최소 mm개 있어야 한다.

이런 이동을 반복하여 모든 더미의 칩 개수를 같게 만드는 것, 즉 더미를 평탄화하는 것이 목표다.

한 번의 이동으로 옮겨지는 칩의 수는 이웃이 둘인 더미에서는 2m2m개, 이웃이 하나인 더미에서는 mm개다. 모든 더미를 평탄화하기 위해 옮겨야 하는 칩의 최소 총 개수를 구하여라.

그림 1. 칩이 각각 0, 7, 8, 1, 4개 있는 다섯 더미.그림 2. 이동 p=2p=2, m=2m=2 를 수행한 뒤의 같은 더미.

입력

  • 첫째 줄에 더미의 개수 NN이 주어진다.
  • 둘째 줄에 NN개의 정수가 주어지며, 그중 ii번째는 ii번 더미의 칩 개수 CiC_i이다.

출력

  • 모든 더미를 평탄화하기 위해 옮겨야 하는 칩의 최소 총 개수를 한 줄에 출력한다.

제한

  • 2≤N≤2002 \le N \le 200
  • 0≤Ci≤20000 \le C_i \le 2000 (게임 시작 시 ii번 더미의 칩 개수, 1≤i≤N1 \le i \le N)
  • 모든 칩의 합은 NN의 배수이며, 항상 평탄화가 가능함이 보장된다.

예제3

  1. 예제 1

    입력
    5
    0 7 8 1 4
    
    예상 출력
    24
    
  2. 예제 2

    입력
    2
    0 4
    
    예상 출력
    2
    
  3. 예제 3

    입력
    3
    3 0 3
    
    예상 출력
    2