Submission #501462

#TimeUsernameProblemLanguageResultExecution timeMemory
501462MazaalaiBigger segments (IZhO19_segments)C++17
37 / 100
1 ms332 KiB
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using VI = vector <int>;
using VLL = vector <ll>;
int n, m;
const int N = 3e3 + 5;
const ll INF = 1e18;
ll pre[N], ans;
int nums[N], dp[N], par[N];
signed main () {
	ios::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);
	// freopen("in.txt", "r", stdin);
	// freopen("out.txt", "w", stdout);
	cin >> n;
	m = n+1;
	for (int i = 1; i <= n; i++) cin >> nums[i];
	for (int i = 1; i <= n; i++) pre[i] += pre[i-1] + nums[i];
	for (int i = 1; i <= n; i++) {
		int p = max(par[i], par[i-1]);
		par[i] = p;
		dp[i] = dp[p]+1;
		ll b = pre[i];
		ll c = pre[p];
		ll a = 2*b-c;
		int id = lower_bound(pre, pre+m, a)-pre;
		par[id] = max(par[id], i);
	}
	ans = dp[n];
	cout << ans << '\n';
}
#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...