#include <bits/stdc++.h>
using namespace std;
#include "light.h"
vector<pair<long long,long long> > one;
long long tot;
void extend(long long x){
	vector<pair<long long,long long> > yey;
	for(int i=0; i<(int)one.size(); i++){
		one[i].second+=x;
		if(one[i].second>tot) one[i].second=tot;
		if(!yey.empty()&&yey.back().second>=one[i].first-1){
			yey.back().second=max(yey.back().second,one[i].second);
		}
		else yey.push_back(one[i]);
	}
	swap(one,yey);
}
void cleanup(){
	assert(one.back().second==tot);
	long long live=tot-2;
	vector<long long> yey={tot};
	long long prev=tot;
	while(!one.empty()){
		if(one.back().second<live){
			yey.push_back(prev);
			if(max(tot-2ll*(tot-prev+1),0ll)>=live) assert(false);
			live=max(tot-2ll*(tot-prev+1),0ll);
		}
		else if(one.back().first<=live){
			yey.push_back(live);
			live=max(tot-2ll*(tot-live+1),0ll);
		}
		else{
			prev=one.back().first;
			one.pop_back();
		}
	}
	if(yey.back()!=1) yey.push_back(1);
	reverse(yey.begin(),yey.end());
	for(long long i:yey) one.push_back({i,i});
}
void prepare(){
	one.clear();
	one={{1,1}};
	tot=1;
}
pair<long long,vector<long long> > join(long long x){
	pair<long long,vector<long long> > ret;
	ret.first=x;
	tot+=x;
	extend(x);
	cleanup();
	ret.second={};
	for(pair<long long,long long> i:one){
		assert(i.first==i.second);
		ret.second.push_back(i.first);
	}
	return ret;
}
pair<long long,vector<long long> > leave(long long x){
	pair<long long,vector<long long> > ret;
	tot-=x;
	while(one.back().second>tot){
		assert(one.back().first==one.back().second);
		one.pop_back();
	}
	ret.first=x;
	extend(x);
	cleanup();
	ret.second={};
	for(pair<long long,long long> i:one){
		assert(i.first==i.second);
		ret.second.push_back(i.first);
	}
	return ret;
}
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... |