题意:给定 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; }