Description
一只南美洲亚马孙河流域热带雨林中的蝴蝶,偶尔扇动几下翅膀,可以在两周以后引起美国德克萨斯州的一场龙卷风。――蝴蝶效应
由于这个理论的存在,大多数人认为将未来的事物送回过去将会引发严重的时间悖论,但事实上还存在另外一套理论。
自然会对这类不和谐的蝴蝶效应做出调整,具体地来说就是触发一些小概率的恶性事件来抹杀穿越者来消除其对未来的影响。
虽然听上去很荒诞,但 A l i c e b e l l Alicebell Alicebell决定去验证这一假说,她将按 1 1 1 ∼$ n 的 顺 序 依 次 到 访 过 去 的 的顺序依次到访过去的 的顺序依次到访过去的n$个时间点。
这 n n n个时间点各有一个能源参数 A i A_i Ai,即到达这个时间点时,身上必须保证有 A i A_i Ai单位的能量,那之后将会消耗掉一单位的能量。
$ Alicebell 想 知 道 依 次 到 访 这 想知道依次到访这 想知道依次到访这n$个时间点,最初需要携带至少多少能量。
Input
第一行,一个正整数 n n n。
第二行, n n n个正整数 A i A_i Ai。
( n ≤ 1 0 5 , 1 ≤ A i ≤ 1 0 9 ) (n\le 10^5,1\le A_i\le 10^9) (n≤105,1≤Ai≤109)
Output
一行,一个正整数,最初需要携带能量下限。
Sample Input
5
1 2 5 4 2
Sample Output
7
Solution
到达第 i i i个点会消耗 i − 1 i-1 i−1能量,故至少需要 m a x ( i − 1 + A i ) max(i-1+A_i) max(i−1+Ai)能量
Code
#include<cstdio>
#include<algorithm>
using namespace std;
int main()
{
int n,a,ans=0;
scanf("%d",&n);
for(int i=1;i<=n;i++)
{
scanf("%d",&a);
ans=max(ans,i-1+a);
}
printf("%d\n",ans);
return 0;
}