427A. Police Recruits
你所在城市的警察局才刚刚开始它的旅程。最初,他们没有任何人力。于是,他们开始分批招聘新兵。
与此同时,城市内不断发生犯罪。一名警察部队成员一生中只能调查一项罪行。
如果在犯罪发生期间没有警察空闲(不忙于犯罪),它将得不到治疗。
根据犯罪发生和新兵招聘的时间顺序,找出未得到处理的犯罪数量。
输入
输入的第一行将包含一个整数n (1 ≤ n ≤ 10^5),事件数。下一行将包含 n 个空格分隔的整数。
如果整数为 -1,则表示发生了犯罪。否则,整数将为正数,即当时一起招募的军官人数。一次招聘的警官不得超过10人。
输出
打印一个整数,即未处理的犯罪数量。
例子
输入
3
-1 -1 1
输出
2
输入
8
1 -1 1 -1 -1 1 1 1
输出
1
输入
11
-1 -1 2 -1 -1 -1 -1 -1 -1 -1 -1
输出
8
注意
让我们考虑第二个例子:
- 首先雇用一个人。
- 然后犯罪出现,最后一个受雇的人将调查此犯罪。
- 又雇用了一个人。
- 又出现了一起犯罪,最后一个受雇的人将调查这个犯罪。
- 犯罪出现。当时没有自由的警察,所以这种罪行不会得到治疗。
- 又雇用了一个人。
- 又雇用了一个人。
- 又雇用了一个人。
答案是1,因为一项犯罪(在第 5 步)将得不到治疗。
解决方法:
// codeforces
// 427A. Police Recruits
# include<iostream>
using namespace std;
int main()
{
int n;
cin >> n;
int sum = 0, a = 0, b;
for(int i = 0; i < n; i++)
{
cin >> b;
if(a == 0)
{
if(b < 0)
{
sum++;
}
else
{
a = a + b;
}
}
else
{
a = a + b;
}
}
cout << sum;
return 0;
}