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 "minerals.h"
#include<bits/stdc++.h>
using namespace std;
bitset<90000> on;
int uwusgi(int x) {
on.flip(x);
return Query(x);
}
#define Query uwusgi
void Solve(int N) {
vector<int> A, B, C(N);
for(int lst = 0, i = 1; i <= 2*N; i++) {
int cc = Query(i);
(cc==lst ? B : A).push_back(i);
lst = cc;
}
// int CC = 0;
for(int b = 0; b < 16; b++) {
int lst = 0;
for(int i = 0; i < N; i++)
if(((i>>b)&1)^on[A[i]])
lst = Query(A[i]);
vector<int> cnt(1<<16), cnto(1<<16);
for(auto i : C) cnt[i]++;
for(int i = 0; i < 1<<b; i++) {
for(int j = 0; j < 1<<(16-b); j++) {
int c = i | (j<<b);
if(c<N)
cnto[i] += j&1;
}
}
for(int i = 0; i < N; i++) {
if(--cnt[C[i]]) {
int qq = Query(B[i]);
if(lst == qq) cnto[C[i]]--;
C[i] |= (lst == qq)<<b;
lst = qq;
} else {
C[i] |= cnto[C[i]]<<b;
}
}
// for(auto i : C) cout << i << " "; cout << endl;
}
for(int i = 0; i < N; i++)
Answer(A[C[i]], B[i]);
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |