#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 time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |