fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. using ll = long long;
  4. int main() {
  5. int n;cin>>n;
  6. vector<ll>a(n);
  7. for(int i = 0;i<n;i++){
  8. cin>>a[i];
  9. }
  10.  
  11. vector<vector<pair<ll,ll>>>dp(n);
  12. dp[0].push_back({a[0],0});
  13.  
  14. //dp[0][0]=0;
  15. for(int i = 1 ;i < n ;i++){
  16. int sum = 0;
  17. for(int j = i ; j >=0;j--){
  18. int l = i-j;
  19. sum+=a[j];
  20. if(j==0){
  21. dp[i].push_back({sum,l});
  22. }else{
  23. ll moves = 1e18;
  24. for(auto u:dp[j-1]){
  25. pair<ll,ll>p = u;
  26.  
  27. if(p.first<=sum){
  28. moves = min(p.second,moves);
  29. }
  30. }
  31.  
  32. if(moves<1e18){
  33. dp[i].push_back({sum,moves+l});
  34. }
  35. }
  36. }
  37. }
  38.  
  39. long long ans = 1e18;
  40. for(auto u:dp[n-1]){
  41. pair<ll,ll>p = u;
  42. if(p.second<1e18){
  43. ans = min(ans,p.second);
  44. }
  45. }
  46. cout<<ans;
  47. return 0;
  48. }
Success #stdin #stdout 0s 5312KB
stdin
5
1 8 1 9 10
stdout
1