Submission #288110

#TimeUsernameProblemLanguageResultExecution timeMemory
288110AMO5Bigger segments (IZhO19_segments)C++17
0 / 100
1 ms396 KiB
#include <bits/stdc++.h>

using namespace std;

typedef long long ll;

const int mxn = 5e5+5;
ll a[mxn];

int main(){
	ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
	int n; cin>>n;
	for(int i=1; i<=n; i++){
		cin>>a[i];
		a[i]+=a[i-1];
	}
	int cnt = 0, ptr = 0;
	ll prev = 0;
	while(true){	
		//cerr<<cnt<<" "<<ptr<<" "<<prev<<": ";
		auto it = lower_bound(a+1+ptr,a+1+n,prev+a[ptr])-a;
		ll now = a[it]-a[ptr];
		//cerr<<it<<" "<<now<<"\n";
		while(ptr+1<it){
			ll mov = a[ptr+1]-a[ptr];
			if(now-mov<prev+mov)break;
			now -= mov;
			prev += mov;
			//cerr<<mov<<" "<<now<<" "<<prev<<" "<<ptr<<"\n";
			ptr++;
		}
		//cerr<<now<<" "<<prev<<" "<<ptr<<"\n";
		prev = a[it]-a[ptr];
		ptr = it;
		cnt++;
		if(ptr>=n)break;
	}
	cout<<cnt<<endl;
	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...