제출 #1163103

#제출 시각아이디문제언어결과실행 시간메모리
1163103emptypringlescanA Light Inconvenience (CEOI23_light)C++20
100 / 100
221 ms420 KiB
#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 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...