제출 #1350642

#제출 시각아이디문제언어결과실행 시간메모리
1350642khanhphucscratchXoractive (IZhO19_xoractive)C++20
100 / 100
2 ms412 KiB
#include "interactive.h"
#include<bits/stdc++.h>
using namespace std;
inline bool getbit(int num, int bit)
{
    return (num >> bit)&1;
}
vector<int> dif(vector<int> a, vector<int> b)
{
    map<int, int> f;
    for(int i : b) f[i]++;
    vector<int> c;
    for(int i : a) if(--f[i] < 0) c.push_back(i);
    sort(c.begin(), c.end());
    return c;
}
vector<int> guess(int n) {
    int last = ask(n);
    map<int, int> f;
    for(int j = 0; j < 7; j++){
        vector<int> question;
        for(int i = 1; i < n; i++) if(getbit(i, j) == 1) question.push_back(i);
        if(question.size() == 0) continue;
        vector<int> x = get_pairwise_xor(question);
        question.push_back(n);
        vector<int> y = get_pairwise_xor(question);
        y = dif(y, x); y = dif(y, {0});
        for(int i : y){
            //cerr<<"A"<<j<<" "<<i<<endl;
            i ^= last; f[i] += (1 << j);
        }
    }
    vector<int> ans(n); ans[n-1] = last;
    for(pair<int, int> i : f) ans[i.second/2-1] = i.first;
    return ans;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...