Submission #173841

#TimeUsernameProblemLanguageResultExecution timeMemory
173841TricksterBigger segments (IZhO19_segments)C++14
0 / 100
3 ms380 KiB
#include <algorithm>
#include <iostream>
#include <stdio.h>
#include <vector>
#include <queue>
#include <cmath>
#include <set>
#include <map>

#define N 100010
#define ff first
#define ss second
#define ll long long
#define pb push_back
#define mod 1000000007
#define pii pair <int, int>

using namespace std;

int n;
int ans;
int v[N];
int p[N];

int main()
{
	cin >> n;
	
	for(int i = 1; i <= n; i++)
		cin >> v[i];
	
	for(int i = n; i >= 1; i--) p[i] = p[i+1] + v[i];
	
	int sum = 0;
	int prev = 0;
	queue <int> Q;
	for(int i = 1; i <= n; i++) {
		sum += v[i];
		
		Q.push(i);
		
		if(!Q.empty() && sum >= prev) {
			while(!Q.empty() && ans) {
				if(sum-v[Q.front()] < prev) break;
				
				sum -= v[Q.front()];
				Q.pop();
			}
			
			Q.empty();
			prev = sum, sum = 0;
			
			if(i != n && p[i+1] < prev) break;
			
			ans ++;
		}
	}
	cout << ans;
}
#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...