Submission #784723

#TimeUsernameProblemLanguageResultExecution timeMemory
784723Soumya1Xoractive (IZhO19_xoractive)C++17
88 / 100
8 ms896 KiB
#include "interactive.h"
#include <bits/stdc++.h>
using namespace std;
int a0;
vector<int> get_values(vector<int> v) {
	int has = -1;
	for (int i = 0; i < v.size(); i++) {
		if (v[i] == 1) has = i;
	}
	if (has != -1) v.erase(v.begin() + has);
	auto v1 = get_pairwise_xor(v);
	v.push_back(1);
	auto v2 = get_pairwise_xor(v);
	vector<int> final;
	multiset<int> s;
	for (int i : v2) s.insert(i);
	for (int i : v1) s.erase(s.find(i));
	s.erase(s.find(0));
	set<int> ss;
	for (int i : s) ss.insert(i);
	for (int i : ss) final.push_back(i ^ a0);
	if (has != -1) final.push_back(a0);
	sort(final.begin(), final.end());
	return final;
}
vector<int> guess(int n) {
	a0 = ask(1);
	vector<int> ans(n);
	vector<vector<int>> v;
	v.push_back({});
	for (int i = 0; i < n; i++) v.back().push_back(i + 1);
	v.back() = get_values(v.back());
	for (int it = 0; v.size() != n ; it++) {
		vector<int> left;
		int cur = 1;
		for (auto x : v) {
			for (int i = 0; i < x.size() / 2; i++) left.push_back(cur++);
			for (int i = x.size() / 2; i < x.size(); i++) cur++;
		}
		auto vals = get_values(left);
		vector<vector<int>> nv;
		for (auto x : v) {
			vector<int> l, r;
			for (int i : x) {
				if (binary_search(vals.begin(), vals.end(), i)) l.push_back(i);
				else r.push_back(i);
			}
			if (!l.empty()) nv.push_back(l);
			if (!r.empty()) nv.push_back(r);
		}
		v = nv;
	}
	for (int i = 0; i < n; i++) {
		ans[i] = v[i][0];
	}
	return ans;
}

Compilation message (stderr)

Xoractive.cpp: In function 'std::vector<int> get_values(std::vector<int>)':
Xoractive.cpp:7:20: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
    7 |  for (int i = 0; i < v.size(); i++) {
      |                  ~~^~~~~~~~~~
Xoractive.cpp: In function 'std::vector<int> guess(int)':
Xoractive.cpp:33:28: warning: comparison of integer expressions of different signedness: 'std::vector<std::vector<int> >::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   33 |  for (int it = 0; v.size() != n ; it++) {
      |                   ~~~~~~~~~^~~~
Xoractive.cpp:37:22: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   37 |    for (int i = 0; i < x.size() / 2; i++) left.push_back(cur++);
      |                    ~~^~~~~~~~~~~~~~
Xoractive.cpp:38:33: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   38 |    for (int i = x.size() / 2; i < x.size(); i++) cur++;
      |                               ~~^~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...