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;
int n;
int cur = 0;
int isbase[90000];
set<int> taken;
bool in(int i){
return (taken.find(i) != taken.end());
}
int query(int i){
if(!in(i)) taken.insert(i);
else taken.erase(i);
cur = Query(i);
return cur;
}
vector<int> base;
vector<int> other;
int otherVal[90000];
void modifyBase(int bit){
for(int i = 0;i < n;i++){
if((i & (1 << bit)) == 0){
if(!in(base[i])) query(base[i]);
}
else{
if(in(base[i])) query(base[i]);
}
}
//cout << bit << ": ";
//for(int x : taken) cout << x << " ";
//cout << "\n";
}
bool check(int i){
int pre = cur;
int x = other[i];
query(x);
if(cur == pre) return true;
else return false;
return true;
}
void Solve(int N){
n = N;
for(int i = 1;i <= 2*n;i++){
int pre = cur;
int C = query(i);
if(pre == C) isbase[i] = 0;
else isbase[i] = 1;
if(isbase[i]) base.push_back(i);
else other.push_back(i);
}
int bit = 0;
while((1<< bit) < n) bit++;
bit--;
for(;bit >= 0;bit--){
modifyBase(bit);
for(int i = 0;i < n;i++){
if(otherVal[i] + (1<<bit) >= n) continue;
if(!check(i)){
otherVal[i] += (1 << bit);
}
}
}
for(int i = 0;i < n;i++){
int B = base[otherVal[i]];
int O = other[i];
//cout << B << " " << O << "\n";
Answer(B, O);
}
}
# | 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... |