Submission #365453

#TimeUsernameProblemLanguageResultExecution timeMemory
365453tfgZalmoxis (BOI18_zalmoxis)C++17
15 / 100
122 ms10988 KiB
#include <iostream>
#include <vector>
#include <chrono>
#include <random>
#include <cassert>

std::mt19937 rng((int) std::chrono::steady_clock::now().time_since_epoch().count());

const int ms = 1001000;
int n, k, cur = 0;
int a[ms];
bool got = false;
int lookahead() { return cur < n ? a[cur] : -1; }
void print(int x) {
	if(got) std::cout << ' ';
	got = true;
	std::cout << x;
}
int rest = 1 << 30;

void solve(int N) {
	assert(N >= 0);
	if(lookahead() == N) {
		print(N);
		cur++;
	} else if(k > 0 && rest - (1 << N) >= k - 1) {
		print(N);
		rest -= 1 << N;
		k--;
	} else {
		solve(N-1);
		solve(N-1);
	}
}

int main() {
	std::ios_base::sync_with_stdio(false); std::cin.tie(NULL);
	std::cin >> n >> k;
	for(int i = 0; i < n; i++) {
		std::cin >> a[i];
		rest -= 1 << a[i];
	}
	solve(30);
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...