R 国正在遭受 M 国的导弹打击,于此同时 R 国刚刚研制出一款防空导弹, 拦截来袭导弹成功率达到 100%,即一枚防空导弹肯定能够拦截一枚来袭导弹。 M 国的来袭导弹已经到来,R 国要求立即生产这种防空导弹,来拦截来袭导 弹。 现在按照时间先后,依次给出 N 个值: 如果是-1,则表示一枚导弹来袭; 如果是 0~10 的正整数,则表示刚刚生产出 x 枚防空导弹,可以立即使用。
请你计算出还有多少枚来袭导弹,没有拦截。
输入格式
第一行一个正整数 N;
第二行 N 个正整数,表示按照时间先后顺序,给出的有一枚来袭导弹或生 产出的防空导弹数量;其值可能是-1 或 1~10 的整数
输出格式
输出一个正整数,表示未能拦截的来袭导弹数量。
输入/输出例子1
输入:
7
1 -1 1 -1 -1 2 0
输出:
1
输入/输出例子2
输入:
10
-1 -1 3 -1 1 -1 -1 -1 -1 1
输出:
3
样例解释
【样例说明】:
对于样例 1: 第一个时间就生产出了一枚防空导弹,可用来拦截第二个时间的-1; 第三个时间又生产出了一枚防空导弹,可用来拦截第四个时间的-1; 第五个时间的-1,则没有剩余的防空导弹拦截; 第六个时间生产出了 2 枚防空导弹,其中一枚可用来拦截第七个时间的- 1。还剩余一枚防空导弹; 总共有 1 枚来袭导弹没有拦截到
【时间限制、数据范围及描述】: 时间:1s 空间:64M
对于 50%的数据:1≤N≤10000;没有特殊限制;
对于 100%的数据:1≤N≤5×10^5;没有特殊限制;
作答区域
#include<bits/stdc++.h>
using namespace std;
int n;
int a;
int s;
int ct=0;
int main(){
cin >> n ;
for (int i=1;i<=n;i++)
{
cin >> a ;
if (a==-1)
{
if (s==0)ct++;
else s--;
}
else s+=a;
}
cout << ct ;
return 0;
}