上海市计算机学会竞赛平台2024年10月月赛丙组游戏闯关

题目描述

小爱现在想要通关一个游戏,已知这个游戏主角的生命值没有上限,但当游戏过程中任意时刻一旦生命值小于等于零、则游戏会结束。

已知该游戏共有 nn 的关卡,第 ii 个关卡有一个参数 aiai​,当 ai>0ai​>0 时表示小爱在通过此关卡时,会补充 aiai​ 点生命值;当 ai<0ai​<0 时表示小爱在通过此关卡时,会损失 aiai​ 点生命值;当 ai=0ai​=0 时表示小爱在通过此关卡时,不会有生命值的改变。

请问,小爱最少在初始时最少需要拥有多少点生命,才能顺利通关?

输入格式

输入共两行:
第一行,一个正整数表示关卡数 nn
第二行,nn 个整数,表示a1,...,ana1​,...,an​

输出格式

输出共一行,一个整数表示答案

数据范围
  • 对于 30%30% 的数据,1≤n≤201≤n≤20;
  • 对于 60%60% 的数据,1≤n≤1031≤n≤103;
  • 对于 100%100% 的数据,1≤n≤1051≤n≤105,−103≤ai≤103−103≤ai​≤103。
样例数据

输入:

3
4 -7 2

输出:

4

输入:

3
1 0 1

输出:

1

说明:

不能出现生命值为0,因此初始状态也需要1点生命值

详见代码:

#include 
using namespace std;
int main() 
{
    int n;
    cin >> n;
    int sum = 0;
    int ans = 0;
    for(int i = 1; i <= n; i++)
    {
        int a;
        cin >> a;
        sum += a;
        ans = min(ans, sum);
    }
    cout << 1 - ans ;
    return 0;
}

你可能感兴趣的:(游戏,算法)