贪心,当钱足够付清前面所有的帐时才还债。
#include <iostream>
using namespace std;
int cost[100010];
int main() {
//freopen("1.txt", "r", stdin);
int n;
cin >> n;
int last = -1;
int cur = 0;
int ans = 0;
int curCost = 0;
int _curCost = 0;
int i = 1;
for(; i <= n; i++) {
cin >> cost[i];
ans += i - cur;
cur = i;
if(cost[i] >= 0) curCost += cost[i];
else {
_curCost += cost[i];
if(last == -1) last = i;
}
if(last != -1 && curCost + _curCost >= 0) {
if(last >= cur) ans += last - cur;
else ans += cur - last;
cur = last;
curCost += _curCost;
_curCost = 0;
last = -1;
}
}
cout << ans + n - cur << endl;
return 0;
}