防空导弹 题解

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;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值