제출 #435341

#제출 시각아이디문제언어결과실행 시간메모리
4353412qbingxuanXoractive (IZhO19_xoractive)C++17
0 / 100
4 ms456 KiB
#include "interactive.h"
#include <bits/stdc++.h>
#define all(v) begin(v),end(v)
using namespace std;
 
vector<int> guess(int n) {
    int xn = ask(n);
    vector<int> ms[7][2];
    for (int b = 0; b < 7; b++) {
        vector<int> v;
        for (int i = 1; i < n; i++) if (i >> b & 1) v.push_back(i);
        auto A = get_pairwise_xor(v);
        v.push_back(n);
        auto B = get_pairwise_xor(v);
        sort(all(A)), sort(all(B));
        ms[b][1].resize(B.size() - A.size());
        set_difference(all(B), all(A), ms[b][1].begin());
        for (int &x: ms[b][1]) x ^= xn;
    }
    vector<int> tot;
    for (int b = 0; b < 7; b++)
        for (int x: ms[b][1])
            tot.push_back(x);
    sort(all(tot)), tot.erase(unique(all(tot)), tot.end());
    for (int b = 0; b < 7; b++)
        set_difference(all(tot), all(ms[b][1]), ms[b][0].begin());
 
    vector<int> ans;
    for (int i = 1; i < n; i++) {
        vector<int> cur = tot;
        for (int b = 0; b < 7; b++) {
            vector<int> tmp;
            set_intersection(all(cur), all(ms[b][i >> b & 1]), back_inserter(tmp));
            cur = tmp;
        }
        assert (cur.size() == 1);
        ans.push_back(cur[0]);
    }
    ans.push_back(xn);
    return ans;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...