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

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

구슬 게임

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

요약
한 번의 이동은 어떤 그릇에서 구슬 하나를 꺼내고, 그릇이 1번이 아니면 번호가 더 작은 모든 그릇에 구슬을 하나씩 넣는다. 모든 그릇이 빌 때까지 필요한 이동 횟수를 구한다.
난이도

보통10점 중 5점

유형
동적 계획법, 수학, 조합론
정답자
아직 제출이 없습니다

문제

11번부터 nn번까지 번호가 매겨진 nn개의 그릇이 있다. 처음에 ii번 그릇에는 mim_i개의 구슬이 들어 있다.

한 번의 동작은 어떤 그릇에서 구슬 하나를 꺼내는 것이다. i>1i > 1인 ii번 그릇에서 구슬을 하나 꺼내면, 1,2,…,i−11, 2, \dots, i-1번 그릇 각각에 구슬이 하나씩 추가된다. 11번 그릇에서 구슬을 꺼낼 때에는 어떤 구슬도 추가되지 않는다. 모든 그릇이 비면 게임이 끝난다.

게임을 끝내기 위해 필요한 동작의 횟수를 구하여라. 구슬은 충분히 많고 모든 그릇은 충분히 커서, 가능한 모든 동작을 항상 수행할 수 있다고 가정해도 된다.

입력

입력은 여러 개의 테스트 케이스로 이루어진다. 각 테스트 케이스의 첫 줄에는 그릇의 개수인 정수 nn (1≤n≤501 \le n \le 50)이 주어진다. 다음 줄에는 nn개의 정수 m1,m2,…,mnm_1, m_2, \dots, m_n (0≤mi≤10000 \le m_i \le 1000)이 주어지며, mim_i는 시작할 때 ii번 그릇에 들어 있는 구슬의 개수이다.

마지막 테스트 케이스 다음에는 00 하나만 있는 줄이 주어진다.

출력

각 테스트 케이스마다 게임을 끝내는 데 필요한 동작의 횟수를 한 줄에 하나씩 출력한다. 이 값은 부호 있는 64비트 정수 범위 안에 들어감이 보장된다.

예제5

  1. 예제 1

    입력
    10
    3 3 3 3 3 3 3 3 3 3
    5
    1 2 3 4 5
    0
    
    예상 출력
    3069
    129
    
  2. 예제 2

    입력
    1
    0
    0
    
    예상 출력
    0
    
  3. 예제 3

    입력
    1
    1000
    0
    
    예상 출력
    1000
    
  4. 예제 4

    입력
    2
    5 7
    0
    
    예상 출력
    19
    
  5. 예제 5

    입력
    1
    7
    3
    1 1 1
    2
    1000 1000
    0
    
    예상 출력
    7
    7
    3000