#include <bits/stdc++.h> using namespace std; long long dp[500001], prefsuma[500001]; int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); int n; cin>>n; for (int i=1; i<=n; i++) { long long pom; cin>>pom; prefsuma[i]=prefsuma[i-1]+pom; dp[i]=INT_MAX; } if (prefsuma[n]<0) { cout<<-1; return 0; } for (int i=1; i<=n; i++) { for (int j=i-1; j>=0; j--) { if (prefsuma[i]-prefsuma[j]>=0 && prefsuma[j]>=0) dp[i]=min(dp[i], dp[j]+i-j-1); } } cout<<dp[n]; return 0; }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | #include <bits/stdc++.h> using namespace std; long long dp[500001], prefsuma[500001]; int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); int n; cin>>n; for (int i=1; i<=n; i++) { long long pom; cin>>pom; prefsuma[i]=prefsuma[i-1]+pom; dp[i]=INT_MAX; } if (prefsuma[n]<0) { cout<<-1; return 0; } for (int i=1; i<=n; i++) { for (int j=i-1; j>=0; j--) { if (prefsuma[i]-prefsuma[j]>=0 && prefsuma[j]>=0) dp[i]=min(dp[i], dp[j]+i-j-1); } } cout<<dp[n]; return 0; } |