Submission #1183296

#TimeUsernameProblemLanguageResultExecution timeMemory
1183296mertbbmA Light Inconvenience (CEOI23_light)C++20
100 / 100
394 ms436 KiB
#include "light.h"
//#include "sample_grader.cpp"
#include <bits/stdc++.h>
using namespace std;

#define int long long 
#define ld long double
#define show(x,y) cout << y << " " << #x << endl;
#define show2(x,y,i,j) cout << y << " " << #x << "  " << j << " " << #i << endl;
#define show3(x,y,i,j,p,q) cout << y << " " << #x << "  " << j << " " << #i << "  " << q << " " << #p << endl;
#define show4(x,y) for(auto it:y) cout << it << " "; cout << #x << endl;
typedef pair<int,int>pii;
//mt19937_64 rng(chrono::system_clock::now().time_since_epoch().count());

set<int>se;
int len=0;

void prepare(){
	se.insert(1);
	len=1;
}

pair<long long,vector<long long>>join(long long p){
	len+=p;
	//redo the structure
	vector<long long>v;
	int cur=len;
	while(cur>0){
		//need something 
		auto it=se.lower_bound(cur);
		int rgt=-1;
		int lft=-1;
		if(it!=se.end()) rgt=*it;
		if(it!=se.begin()){
			it--;
			lft=min(cur,*it+p);
		}
		if(lft!=cur) cur=rgt;
		v.push_back(cur);
		int diff=len-cur+1;
		cur=cur-diff-1;
	}
	v.push_back(1);
	sort(v.begin(),v.end());
	v.resize(unique(v.begin(),v.end())-v.begin());
	//show4(v,v);
	se.clear();
	for(auto it:v) se.insert(it);
	return {p,v};
}

pair<long long,std::vector<long long>>leave(long long p){
	len-=p;
	//redo the structure
	vector<long long>v;
	int cur=len;
	while(cur>0){
		//need something 
		auto it=se.lower_bound(cur);
		int rgt=-1;
		int lft=-1;
		if(it!=se.end()) rgt=*it;
		if(it!=se.begin()){
			it--;
			lft=min(cur,*it+p);
		}
		if(lft!=cur) cur=rgt;
		v.push_back(cur);
		int diff=len-cur+1;
		cur=cur-diff-1;
	}
	v.push_back(1);
	sort(v.begin(),v.end());
	v.resize(unique(v.begin(),v.end())-v.begin());
	//show4(v,v);
	se.clear();
	for(auto it:v) se.insert(it);
	return {p,v};
}
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...