Submission #1212524

#TimeUsernameProblemLanguageResultExecution timeMemory
1212524makravXoractive (IZhO19_xoractive)C++20
100 / 100
1 ms408 KiB
#include "interactive.h"
#include <bits/stdc++.h>

using namespace std;

vector<int> guess(int n) {
	int fir = ask(1);
    map<int, int> pos;
    vector<int> ans(n); ans[0] = fir;
    for (int bit = 0; bit < 7; bit++) {
        vector<int> mn;
        for (int i = 1; i < n; i++) if ((i >> bit) & 1) mn.push_back(i + 1);
        if (!mn.empty()) {
            vector<int> xrs = get_pairwise_xor(mn);
            mn.push_back(1);
            vector<int> new_xrs = get_pairwise_xor(mn);
            int id = 0;
            for (int u : xrs) {
                while (id < new_xrs.size() && new_xrs[id] != u) {
                    if (new_xrs[id] != 0) {
                        pos[new_xrs[id] ^ fir] += (1 << bit);
                    }
                    id++;
                }
                id++;
            }
            while (id < new_xrs.size()) {
                if (new_xrs[id] != 0) {
                    pos[new_xrs[id] ^ fir] += (1 << bit);
                }
                id++;
            }
        }
    }
    for (auto u : pos) ans[u.second / 2] = u.first;
    return ans;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...