Flyttkartonger | 프로그래밍의 벗 PivotOJ
PivotOJ

Flyttkartonger

시간 제한: 1000ms메모리 제한: 1024MB출처: Programmeringsolympiaden 2018 — skolkvalBOJ 20858
이 문제는 본문 이미지 일부가 표시되지 않습니다. 텍스트만으로 풀이가 어려울 수 있습니다.

문제

Du har just hjälpt en kompis att flytta, men tyvärr har du fastnat i fel ände av en smal korridor full med flyttkartonger. Korridoren består av NN staplar av flyttkartonger, där stapel nummer ii innehåller aia_i kartonger. Alla kartonger är lika stora.

Det enda sättet att ta sig ut är att gå ovanpå staplarna från stapel 11 till stapel NN. Om man befinner sig på en stapel kan man gå till en närliggande stapel, men bara om den inte är högre än den man står på. Om stapeln man står är minst två kartonger högre än en närliggande stapel kan man dessutom knuffa ner den översta kartongen från stapeln man står på till den närliggande stapeln. Detta kan upprepas hur många gånger som helst. 

Du befinner dig just nu på stapel 11. Tyvärr kanske det är omöjligt för dig att komma till stapel NN. Men som tur är får du lägga till valfritt antal extra kartonger till stapel 11 innan du börjar gå. Skriv ett program som beräknar hur många extra kartonger du behöver lägga till för att kunna ta dig till stapel NN.

[이미지 1]

Bilden visar exempel 1. De mörkgrå kartongerna är extrakartonger. Strategin är alltså att knuffa ner den översta extrakartongen till stapel 2. Därefter kan man gå raka vägen till stapel 4. Det hade inte hade fungerat med färre än 3 extrakartonger.

입력

På första raden står ett heltal NN, antalet staplar. På andra raden står NN heltal aia_i, antalet kartonger i varje stapel. 

출력

Programmet ska skriva ut ett heltal: det minsta antalet extra flyttkartonger som behöver läggas till.

예제

예제 1

입력
4
1 2 3 2
출력
3

예제 2

입력
3
5 2 3
출력
0

예제 3

입력
6
30 5 10 15 13 30
출력
261
코드를 제출하려면 로그인하세요.