제출 #1206881

#제출 시각아이디문제언어결과실행 시간메모리
1206881trimkusA Light Inconvenience (CEOI23_light)C++20
0 / 100
1111 ms1051060 KiB
#include "light.h"
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
int cnt;
ll N = 1;
vector<ll> active;
void prepare(){
	cnt = 0;
}

void complete() {
	active.clear();
	ll bit = 0;
	for (int i = N; i >= N / 2;) {
		// cout << i << " -> ";
		active.push_back(i);
		i -= (1LL << bit);
		bit++;
	}
	bit = 0;
	for (int i = 1; i <= N / 2 + 1;) {
		active.push_back(i);
		i += (1LL << bit);
		bit++;
	}
	sort(begin(active), end(active));
	active.erase(unique(begin(active), end(active)), end(active));
	vector<ll> nactive = active;
	active.clear();
	int M = (int)nactive.size();
	active.push_back(nactive[0]);
	for (int i = 1; i <= M / 2; ++i) {
		ll j = nactive[i - 1];
		ll till = nactive[i];
		bit = 0;
		for (; j < till; j += (1LL << bit++)) {
			active.push_back(j);
		}
	}
	active.push_back(nactive[M - 1]);
	for (int i = M - 2; i >= M / 2; --i) {
		ll j = nactive[i + 1];
		ll till = nactive[i];
		bit = 0;
		for (; j > till; j -= (1LL << bit++)) {
			active.push_back(j);
		}
	}
	sort(begin(active), end(active));
	active.erase(unique(begin(active), end(active)), end(active));
}

std::pair<long long, std::vector<long long>> join(long long p){
	ll T = 5 * p;
	N += p;
	complete();
	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 = 5 * p;
	N -= p;
	complete();
	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...