问题 B: 小婷婷吃蘑菇

题目描述

小婷婷是个吃货, 有一天, 她来到了神奇的魔法谷, 这里有一条单行道路, 小婷婷为了吃到世界上最美味的食物,必须要穿过这条道路。

        这是一个长度为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;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值