제출 #143611

#제출 시각아이디문제언어결과실행 시간메모리
143611impetus_Xoractive (IZhO19_xoractive)C++14
100 / 100
7 ms504 KiB
#include "interactive.h" #include<bits/stdc++.h> #define mp make_pair #define pb push_back #define f first #define s second #define sz(s) (int)s.size() #define all(s) s.begin(), s.end() #define forn(i, x, y) for(int i = x; i <= y; i++) #define forev(i, y, x) for(int i = y; i >= x; i--) using namespace std; const int maxn = (int)3e5 + 100; const int mod = (int)1e9 + 7; const int P = (int)1e6 + 7; const int inf = (int)1e9 + 7; typedef pair<int, int> pii; typedef long long ll; typedef vector<int> vi; typedef vector<pii> vpii; typedef long double ld; using namespace std; /* int n, a[maxn]; int ask(int pos){ return a[pos]; } vi get_pairwise_xor(vi v){ vi cur; for(auto x : v) for(auto y : v) cur.pb(a[x] ^ a[y]); sort(all(cur)); return cur; } */ vi clear(vi now, int kek){ while(kek--) now.erase(now.begin()); forn(i, 0, sz(now) - 1){ if(i < sz(now)) now.erase(now.begin() + i); } return now; } vi elements(vi cur){ vi now = get_pairwise_xor(cur), v; int f = ask(cur[0]); now = clear(now, sz(cur)); vi nxt = cur; nxt.erase(nxt.begin()); nxt = get_pairwise_xor(nxt); nxt = clear(nxt, sz(cur) - 1); map<int, int> was; for(auto x : nxt) was[x] = 1; for(auto x : now) if(!was[x]) v.pb(x ^ f); v.pb(f); return v; } int End[maxn]; vector<int> guess(int n) { vector <int> ans; map<int, int> pos; int f=ask(1); for(int bit = 0; bit <= 30; bit++){ vi cur; for(int i = 0; i < n; i++){ if((i >> bit) & 1) cur.pb(i+1); } if(!sz(cur)) break; vi b=get_pairwise_xor(cur); cur.pb(1); vi now=get_pairwise_xor(cur); now.erase(now.begin()); for(auto d:b) now.erase(find(all(now), d)); for(auto &d:now) d ^= f; forn(i,0,sz(now)-1) now.erase(now.begin()+i); for(auto x:now){ pos[x]+=(1<<bit); } } ans.resize(n); ans[0]=f; for(auto x : pos) ans[x.s] = x.f; return ans; }/* int main () { cin >> n; map<int,int>used; forn(i, 0, n-1){ a[i]=i } for(auto x : guess(n)) cout << x << " "; }*/
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...