Submission #143597

#TimeUsernameProblemLanguageResultExecution timeMemory
143597impetus_Xoractive (IZhO19_xoractive)C++14
6 / 100
4 ms632 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){ while(now[0] == 0) 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); vi nxt = cur; nxt.erase(nxt.begin()); nxt = get_pairwise_xor(nxt); nxt = clear(nxt); 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; for(int bit = 0; bit <= 6; bit++){ vi cur; for(int i = 1; i <= n; i++){ if((i >> bit) & 1) cur.pb(i); } if(!sz(cur)) continue; if(sz(cur) == 1){ pos[ask(cur[0])] = cur[0]; End[cur[0]] = 1; continue; } if(sz(cur) == 2){ pos[ask(cur[0])] = cur[0]; pos[ask(cur[1])] = cur[1]; End[cur[0]] = End[cur[1]] = 1; continue; } vi now = elements(cur); for(auto x : now) if(!End[x]) pos[x] += (1 << bit); } ans.resize(n); for(auto x : pos) ans[x.s - 1] = x.f; return ans; }/* int main () { cin >> n; forn(i, 1, n) cin >> a[i]; for(auto x : guess(n)) cout << x << " "; }*/
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...