Submission #1132027

#TimeUsernameProblemLanguageResultExecution timeMemory
1132027KasymKXoractive (IZhO19_xoractive)C++17
94 / 100
3 ms524 KiB
#include "bits/stdc++.h"
#include "interactive.h"
using namespace std;
#define ff first
#define ss second
#define all(v) v.begin(), v.end()
#define ll long long
#define pb push_back
#define pii pair<int, int>
#define pli pair<ll, int>
#define pll pair<ll, ll>
#define tr(i, c) for(auto i = c.begin(); i != c.end(); ++i)
#define wr puts("----------------")
template<class T>bool umin(T& a,T b){if(a>b){a=b;return 1;}return 0;}
template<class T>bool umax(T& a,T b){if(a<b){a=b;return 1;}return 0;}
// const int N = 105;
// int dream[N];

// vector<int> get_pairwise_xor(vector<int> &a){
//     vector<int> ret;
//     tr(it, a)
//     tr(it2, a)
//     ret.pb(dream[*it]^dream[*it2]);
//     assert((int)ret.size()==(int)a.size()*(int)a.size());
//     return ret;
// }

// int ask(int i){
//     return dream[i];
// }

vector<int> guess(int n){
    vector<int> ret(n), id, v;
    map<int, int> mp, as;
    int knew=ask(1);
    ret[0]=knew;
    for(int i = 1; i <= n; i*=2){
        id.clear();
        for(int mk = 2; mk <= n; ++mk)
            if(mk&i)
                id.pb(mk);
        v.clear(), mp.clear();
        id.pb(1);
        v=get_pairwise_xor(id);
        tr(it, v)
        mp[*it]++;
        id.pop_back();
        v=get_pairwise_xor(id);
        tr(it, v)
        mp[*it]--;
        for(auto ad : mp){
            if(ad.ss==0)
                continue;
            as[ad.ff^knew]|=i;
        }
    }
    for(auto i : as)
        ret[i.ss-1]=i.ff;
    return ret;
}

// int main(){
//     int n;
//     scanf("%d", &n);
//     for(int i = 1; i <= n; ++i)
//         scanf("%d", dream+i);
//     vector<int> wow=guess(n);
//     tr(it, wow)
//     printf("%d ", *it);
//     puts("");
//     return 0;
// }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...