Submission #883696

#TimeUsernameProblemLanguageResultExecution timeMemory
883696OAleksaBigger segments (IZhO19_segments)C++14
100 / 100
69 ms20820 KiB
#include<bits/stdc++.h>
using namespace std;
#define f first
#define s second
#define int long long
const int maxn = 5e5 + 69;
const int inf = 1e18;
int n, a[maxn], p[maxn], dp[maxn], pos[maxn];
signed main() {
	ios_base::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);
  int tt = 1;
	//cin >> tt;
  while (tt--) {
   	cin >> n;
   	for (int i = 1;i <= n;i++) 
   		cin >> a[i];
   	for (int i = 1;i <= n;i++)
   		p[i] = p[i - 1] + a[i];
   	for (int i = 1;i <= n;i++) {
   		pos[i] = max(pos[i - 1], pos[i]);
   		dp[i] = dp[pos[i]] + 1;
   		auto u = lower_bound(p + 1, p + n + 1, 2 * p[i] - p[pos[i]]) - p;
   		if (u <= n)
   			pos[u] = max(pos[u], i);
   	}
   	cout << dp[n];
	}
	return 0;
}
#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...