Submission #1206927

#TimeUsernameProblemLanguageResultExecution timeMemory
1206927trimkusA Light Inconvenience (CEOI23_light)C++20
100 / 100
182 ms436 KiB
#include "light.h"
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
int cnt;
ll N = 1;
const ll alpha = 1;
vector<ll> active = {1};
void prepare(){
	cnt = 0;
}

void complete(ll p) {
	vector<ll> nw = {N};
	ll x = N;
	// cout << x << " -> ";
	while (x > 1) {
		x -= min(x - 1, N + 1 - (x - 1));
		int i = upper_bound(begin(active), end(active), x) - begin(active) - 1;
		if (x - active[i] > p) {
			x = active[i + 1];
		}
		// cout << x << " -> ";
		nw.push_back(x);
	}
	// cout << " end!\n";
	nw.push_back(1);
	active = nw;
}

std::pair<long long, std::vector<long long>> join(long long p){
	ll T = alpha * p;
	N += p;
	complete(T);
	sort(begin(active), end(active));
	active.erase(unique(begin(active), end(active)), end(active));
	return {T, active};
}

std::pair<long long, std::vector<long long>> leave(long long p){
	ll T = alpha * p;
	N -= p;
	complete(T);
	sort(begin(active), end(active));
	active.erase(unique(begin(active), end(active)), end(active));
	return {T, active};
}
#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...