//g++ -o sol sol.cpp
//cd C:\Users\Asus-1\OneDrive\Desktop
#include <bits/stdc++.h>
using namespace std;
#define int long long
#define ld long double
const int INF = 1e18;
const int N = 100001;
#define S(a) a.begin() , a.end()
#define pb push_back
#define READ(l , r , a) for(int i = l;i <= r;i++) cin >> a[i]
#define printV(l , r , a) for(int i = l;i <= r;i++) cout << a[i] << ' ';
#define pii pair < int , int >
int n;
int a[500001] , p[500001];
pair < int , int > dp[500001];
signed main(){
ios_base::sync_with_stdio();
cin.tie(0);
cout.tie(0);
cin >> n;
READ(1 , n , a);
p[1] = a[1];
for(int i = 2;i <= n;i++) p[i] = p[i - 1] + a[i];
dp[1] = {1 , a[1]};
for(int i = 2;i <= n;i++)
{
for(int j = i - 1;j >= 1;j--){
if(p[i] - p[j] >= dp[j].second)
{
int nw_res = dp[j].first + 1;
if(dp[i].first < nw_res) dp[i] = {nw_res , p[i] - p[j]};
else dp[i].second = min(dp[i].second , p[i] - p[j]);
}
}
}
cout << dp[n].first << endl;
}
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |