#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... |