# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
1133938 | Agageldi | Xoractive (IZhO19_xoractive) | C++17 | 0 ms | 0 KiB |
#include <bits/stdc++.h>
//#include "interactive.h"
using namespace std;
#define ll long long
#define N 200005
#define pb push_back
#define ff first
#define ss second
#define sz(s) (int)s.size()
vector <int> a, b, c, d, h;
vector <pair<int,int> > answer;
map <int,int> vis;
vector <int> guess(int n) {
int y = ask(n);
answer.pb(make_pair(y, n));
for(int i = 0; i <= 7; i++) {
b.clear();
h.clear();
for(int j = 1; j < n; j++) {
if((j & (1 << i))) b.pb(j);
}
if(sz(b)) {
c = get_pairwise_xor(b);
b.pb(n);
d = get_pairwise_xor(b);
reverse(c.begin(),c.end());
reverse(d.begin(),d.end());
while(sz(c) > 0 && c[sz(c) - 1] == 0) c.pop_back();
while(sz(d) > 0 && d[sz(d) - 1] == 0) d.pop_back();
int cnt = sz(c) - 1;
for(int j = sz(d) - 1; j >= 0; j--) {
if(cnt >= 0 && d[j] == c[cnt]) cnt--;
else h.pb(d[j]);
}
for(int k = 0; k < sz(h); k++) {
int x = (h[k] ^ y);
vis[x] |= (1 << i);
}
}
}
for(auto i : vis) {
answer.pb(make_pair(i.ss,i.ff));
}
sort(answer.begin(),answer.end());
for(auto i : answer) {
a.pb(i.ss);
}
return a;
}