题目描述
小婷婷是个吃货, 有一天, 她来到了神奇的魔法谷, 这里有一条单行道路, 小婷婷为了吃到世界上最美味的食物,必须要穿过这条道路。
这是一个长度为N的魔法道路,小婷婷需要从1走到N。每个单位长度上有一个蘑菇, 因为小婷婷是个大吃货, 所以她总是控制不住自己, 必须要吃掉在眼前的食物。 但是这些蘑菇受到了魔法的影响,有的可以增加小婷婷的生命,有的可以减少小婷婷的生命。当小婷婷的生命 < 0时,小婷婷就不能前进, 被召回现实世界了, 现在小婷婷希望大家告诉她,她最少需要有多少初始生命值,才能通过这条魔法道路,吃到世界上最美味的食物?
输入
第1行:一个数N,表示魔法道路的长度。(1 <= N <= 50000)
接下来的N行,每行一个数A[i],表示第i个单位上有一个魔法蘑菇,可以对小婷婷的生命增加A[i](如果A[i] > 0,表示小婷婷生命增加A[i],如果A[i] < 0,表示小婷婷生命减少A[i])。
其中-1000000000 <= A[i] <= 1000000000。
输出
输出小婷婷通过魔法道路的最小初始生命。
样例输入
51-2-134
样例输出
2
用数组可以很容易实现,附上ac代码:
#include<iostream>
using namespace std;
int main()
{
int n;
int a[50005];
cin>>n;
for(int i=0;i<n;i++)
{
cin>>a[i];
}
long long int sum=0,ss=0,summ=0;
for(int i=0;i<n;i++)
{
sum+=a[i];
if(sum<=0)
{
summ=-sum;
if(summ>=ss)
ss=summ;
}
}
cout<<ss<<endl;
}