Submission #1213628

#TimeUsernameProblemLanguageResultExecution timeMemory
1213628FatonimA Light Inconvenience (CEOI23_light)C++20
0 / 100
215 ms416 KiB
#include "light.h"
#include <bits/stdc++.h>

using namespace std;

#define ll long long
#define all(a) a.begin(), a.end()

#define dbg(a) cerr << __LINE__ << ": " << "[" << #a << " = " << a << "]\n"

ll n;

vector<ll> f;
void prepare() {
	n = 1;
	f.clear();
}

std::pair<long long, std::vector<long long>> join(long long p) {
	ll t = p;
	n += p;

	set <ll> s;
	ll x = n, cur = 1;
	while (1) {
		s.insert(x);
		if (x == 1) break;
		x = max(1LL, x - (1LL << cur));
		++cur;
	}

	f.clear();
	for (auto i : s) {
		f.push_back(i);
	}
	return {t, f};
}

std::pair<long long, std::vector<long long>> leave(long long p) {
	int t = p;
	n -= p;

	set <ll> s;
	ll x = n, cur = 1;
	while (1) {
		s.insert(x);
		if (x == 1) break;
		x = max(1LL, x - (1LL << cur));
		++cur;
	}

	set<ll> s2;
	// dbg(p);
	for (auto i : f) {
		if (i <= n) {
			auto it = s.upper_bound(i);
			s2.insert(i);
			while (it != s.end() && *it - i <= t) {
				s2.insert(*it);
				++it;
			}
			if (i + t <= n) s2.insert(i + t);
		}
	}
	f.clear();
	for (auto i : s2) {
		f.push_back(i);
	}

	return {t, f};
}
#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...