题意:给定 n 个数,有正数和-1, -1表示罪犯,正数表示招了几个警察,一个警察只能看一个罪犯,并且要按顺序,问你有多少罪犯逃脱。
析:很简单么,从开始扫到最后,把是正数就加上,是-1判断剩余警察大于0,如果是就让警察数减1,如果不是答案加1.
代码如下:
#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
const int maxn = 1e5 + 5;
const int INF = 0x3f3f3f3f;
int a[maxn];
int main(){
int n;
while(cin >> n){
for(int i = 0; i < n; ++i) scanf("%d", &a[i]);
int ans = 0;
int of = 0;
for(int i = 0; i < n; ++i){
if(a[i] == -1){
if(of) --of;
else ++ans;
}
else of += a[i];
}
cout << ans << endl;
}
return 0;
}
浙公网安备 33010602011771号