This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
#define ll long long
#define ld long double
#define ull unsigned long long
#define pb push_back
#define pll pair<int, pii>
#define pii pair<int, int>
#define fi first
#define se second
#include "interactive.h"
using namespace std;
const int N = 2e5+5;
const int M = 350;
const int mod = 1e9+7;
const ll base = 75;
const ll inf = 1e12;
int n, t, tong;
int k, m, a[N], b[N];
ll ans, dp[N], d[N];
vector<int> adj[N], gr[N];
vector<pii> g[N];
vector<int> guess(int n)
{
vector<int> res;
map<int, int> mp;
res.resize(n);
res[n-1] = ask(n);
if(n < 15)
{
for(int i = 1; i < n; i ++)res[i-1] = ask(i+1);
return res;
}
for(int j = 0; j < 7; j ++)
{
vector<int> l, r, vi;
for(int i = 1; i < n; i ++)
if(i >> j & 1)vi.pb(i);
l = get_pairwise_xor(vi);
vi.pb(n);
r = get_pairwise_xor(vi);
for(int il =(int) l.size()-1, ir = (int) r.size()-1; il >= 0;)
{
if(l[il] == r[ir])
{
l.pop_back();
swap(r[ir], r.back());
r.pop_back();
--il;
--ir;
}
else --ir;
}
for(int x: r)mp[x^res[n-1]] |= (1<<j);
}
for(pii x: mp)res[x.se-1] = x.fi;
return res;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |