Submission #645835

#TimeUsernameProblemLanguageResultExecution timeMemory
645835boris_mihovXoractive (IZhO19_xoractive)C++17
100 / 100
4 ms388 KiB
#include "interactive.h" #include <algorithm> #include <iostream> #include <numeric> #include <vector> #include <map> #include <set> typedef long long llong; const int MAXN = 250 + 10; const int INF = 1e9; std::map <int,int> map; std::vector <int> ans, res, res2, queried; std::multiset <int> s; std::vector <int> query(std::vector <int> returned, int sz) { std::vector <int> curr; for (int i = sz ; i < returned.size() ; i += 2) { curr.push_back(returned[i]); } return curr; } std::vector <int> guess(int n) { ans.resize(n); ans[n-1] = ask(n); for (int log = 0 ; (1 << log) <= n-1 ; ++log) { s.clear(); queried.clear(); for (int i = 1 ; i <= n-1 ; ++i) { if ((i & (1 << log))) { queried.push_back(i); } } queried.push_back(n); if (queried.size() == 1) continue; res = query(get_pairwise_xor(queried), queried.size()); if (queried.size() == 2) { map[res[0] ^ ans[n-1]] |= (1 << log); continue; } queried.pop_back(); res2 = query(get_pairwise_xor(queried), queried.size()); for (const int &i : res) s.insert(i); for (const int &i : res2) s.erase(s.find(i)); for (const int &i : s) { map[i ^ ans[n-1]] |= (1 << log); } } for (auto [key, value] : map) { ans[value - 1] = key; } return ans; }

Compilation message (stderr)

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