Flyttkartonger

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 $N$ staplar av flyttkartonger, där stapel nummer $i$ innehåller $a_ i$ kartonger. Alla kartonger är lika stora.

Det enda sättet att ta sig ut är att gå ovanpå staplarna från stapel $1$ till stapel $N$. 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 $1$. Tyvärr kanske det är omöjligt för dig att komma till stapel $N$. Men som tur är får du lägga till valfritt antal extra kartonger till stapel $1$ 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 $N$.

\includegraphics[width=8cm]{kartongbild2.png}
Figure 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.

Indata

På första raden står ett heltal $N$, antalet staplar. På andra raden står $N$ heltal $a_ i$, antalet kartonger i varje stapel.

Utdata

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

Poängsättning

För testfall värda

$20$ poäng

gäller att

$N=3$

, $1 \le a_ i \le 20$.

$20$ poäng

 

$3\le N\le 5$

, $1 \le a_ i \le 100$.

$20$ poäng

 

$5\le N\le 10$

, $1 \le a_ i \le 1000$.

$40$ poäng

 

$10\le N\le 20$

, $1 \le a_ i \le 3000$.

Sample Input 1 Sample Output 1
4
1 2 3 2
3
Sample Input 2 Sample Output 2
3
5 2 3
0
Sample Input 3 Sample Output 3
6
30 5 10 15 13 30
261