#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; } |
English