Submission #1368770

#TimeUsernameProblemLanguageResultExecution timeMemory
1368770kawhietLibrary (JOI18_library)C++20
100 / 100
86 ms476 KiB
#include <bits/stdc++.h>
#include "library.h"
using namespace std;

void Solve(int n) {
	set<int> s;
	for (int i = 0; i < n; i++) {
		s.insert(i);
	}
	if (n == 1) {
		Answer({1});
		return;
	}
	vector<int> ans;
	for (int i = 0; i < n; i++) {
		vector<int> x(n, 1);
		x[i] = 0;
		if (Query(x) == 1) {
			s.erase(i);
			ans.push_back(i + 1);
			break;
		}
	}
	while (ans.size() < n) {
		vector<int> rem;
		for (int x : s) {
			rem.push_back(x);
		}
		int l = 0, r = rem.size();
		while (l + 1 < r) {
			int m = (l + r) / 2;
			vector<int> x(n), y(n);
			for (int i : ans) {
				x[i - 1] = 1;
			}
			for (int i = 0; i < m; i++) {
				x[rem[i]] = y[rem[i]] = 1;
			}
			if (Query(x) == (m == 0 ? 0 : Query(y))) {
				r = m;
			} else {
				l = m;
			}
		}
		ans.push_back(rem[l] + 1);
		s.erase(rem[l]);
	}
	Answer(ans);
}
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...