#include<bits/stdc++.h> using namespace std; int main(){ ios_base::sync_with_stdio(0); cin.tie(0); int n; cin >> n; vector<long long> a(n + 1), pref(n + 1), res(n + 1); for(int i = 1;i <= n;i++){ cin >> a[i]; pref[i] = pref[i - 1] + a[i]; res[i] = pref[i] > 0; for(int j = 1;j < i;j++) if(res[j] && pref[i] - pref[j] >= 0) res[i] = max(res[i], res[j] + 1); } cout << (res[n] ? n - res[n] : -1) << '\n'; }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | #include<bits/stdc++.h> using namespace std; int main(){ ios_base::sync_with_stdio(0); cin.tie(0); int n; cin >> n; vector<long long> a(n + 1), pref(n + 1), res(n + 1); for(int i = 1;i <= n;i++){ cin >> a[i]; pref[i] = pref[i - 1] + a[i]; res[i] = pref[i] > 0; for(int j = 1;j < i;j++) if(res[j] && pref[i] - pref[j] >= 0) res[i] = max(res[i], res[j] + 1); } cout << (res[n] ? n - res[n] : -1) << '\n'; } |