Submission #1318049

#TimeUsernameProblemLanguageResultExecution timeMemory
1318049ElayV13Bigger segments (IZhO19_segments)C++20
0 / 100
0 ms332 KiB
//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 timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...