Submission #954548

#TimeUsernameProblemLanguageResultExecution timeMemory
954548boris_mihovXoractive (IZhO19_xoractive)C++17
100 / 100
4 ms848 KiB
#include "interactive.h" #include <vector> #include <map> #include <set> const int MAXN = 100 + 10; std::map <int,int> map; std::vector <int> query(std::vector <int> v) { std::vector <int> res; for (int &i : v) i++; std::vector <int> returned = get_pairwise_xor(v); for (int i = v.size() ; i < returned.size() ; i += 2) { res.push_back(returned[i]); } return res; } std::vector <int> guess(int n) { std::vector <int> result(n); result[0] = ask(1); for (int bit = 0 ; (1 << bit) < n ; ++bit) { std::vector <int> v; for (int i = 1 ; i < n ; ++i) { if (i & (1 << bit)) { v.push_back(i); } } if (v.empty()) { continue; } std::vector <int> without = query(v); v.push_back(0); std::vector <int> with = query(v); std::multiset <int> vals; for (const int &val : with) { vals.insert(val); } for (const int &val : without) { vals.erase(vals.find(val)); } int last = -1; for (const int &val : vals) { if (val == last) { continue; } map[val ^ result[0]] |= (1 << bit); last = val; } } for (const auto &[key, value] : map) { result[value] = key; } return result; }

Compilation message (stderr)

Xoractive.cpp: In function 'std::vector<int> query(std::vector<int>)':
Xoractive.cpp:14:31: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   14 |     for (int i = v.size() ; i < returned.size() ; i += 2)
      |                             ~~^~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...