이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#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... |