제출 #229455

#제출 시각아이디문제언어결과실행 시간메모리
229455_7_7_Xoractive (IZhO19_xoractive)C++14
0 / 100
9 ms512 KiB
#include "interactive.h" #include <bits/stdc++.h> //#define int long long //#pragma GCC optimize("Ofast") //#pragma comment(linker, "/stack:200000000") //#pragma GCC target("sse,sse2,sse3,ssse3,sse4") #define file(s) freopen(s".in","r",stdin); freopen(s".out","w",stdout); #define all(x) x.begin(), x.end() #define sz(s) (int)s.size() #define pb push_back #define ppb pop_back #define mp make_pair #define s second #define f first using namespace std; typedef pair < long long, long long > pll; typedef pair < int, int > pii; typedef unsigned long long ull; typedef vector < pii > vpii; typedef vector < int > vi; typedef long double ldb; typedef long long ll; typedef double db; const int dx[] = {1, -1, 0, 0}, dy[] = {0, 0, 1, -1}, block = 555; const int inf = 1e9, maxn = 4e5 + 148, mod = 1e9 + 7, N = 111; const pii base = mp(1171, 3307), Mod = mp(1e9 + 7, 1e9 + 9); const db eps = 1e-12, pi = 3.14159265359; const ll INF = 1e18; int G[10]; set < int > Q[10]; multiset < int > q; unordered_map < int, int > was, d; int Ask (int x) { if (was.count(x)) return was[x]; return was[x] = ask(x); } vi guess(int n) { int p = 1; while (p*2 <= n) p *= 2; --p; for (int i = 0; i <= 6; ++i) { if ((1 << i) > n) break; int x = p; if (!(p & (1 << i))) { for (int j = 1; j <= n; ++j) if (j & (1 << i)) x = j; } int y = Ask(x); vi cur, cur1; for (int j = 1; j <= n; ++j) if (j & (1 << i)) { cur.pb(j); if (j != x) cur1.pb(j); } if (sz(cur) == 1) { Q[i].insert(y); break; } q.clear(); cur = get_pairwise_xor(cur); cur1 = get_pairwise_xor(cur1); for (auto j : cur) q.insert(j); for (auto j : cur1) q.erase(q.find(j)); for (auto j : q) Q[i].insert(j ^ y); } /* for (int i = 0; i < 7; ++i) { for (auto j : Q[i]) cerr << j << ' '; cerr << "hello\n"; cerr << endl; }*/ vi res; for (int i = 1; i <= n; ++i) { vi cur; for (int j = 0; j < 7; ++j) if (i & (1 << j)) cur.pb(j); for (auto j : Q[cur[0]]) { bool ok = 1; for (auto y : cur) if (!Q[y].count(j)) { ok = 0; break; } if (ok) { res.pb(j); break; } } } return res; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...