#include "minerals.h"
#include <bits/stdc++.h>
using namespace std;
mt19937 x(chrono::high_resolution_clock::now().time_since_epoch().count());
set<int> in_machine;
set<int> out_machine;
set<int> answered;
int siz;
int ran(set<int> &s){
auto it = s.begin();
int powt=x()%((int)s.size());
while(powt--)it++;
return *it;
}
void MyQuery(int v){
siz=Query(v);
}
void Solve(int N){
vector<pair<int,int>> ans;
set<int> to_guess;
for (int i = 1; i<=2*N; i++){
to_guess.insert(i);
out_machine.insert(i);
}
while(to_guess.size()){
int prv=siz;
int el=-1,el2=-1;
while(out_machine.size()){
el=ran(out_machine);
out_machine.erase(el);
in_machine.insert(el);
MyQuery(el);
if (prv==siz)break;
prv=siz;
}
while(in_machine.size()){
el2=ran(in_machine);
while(el2==el)el2=ran(in_machine);
in_machine.erase(el2);
out_machine.insert(el2);
MyQuery(el2);
if (prv==siz)break;
prv=siz;
}
ans.push_back({el,el2});
to_guess.erase(el);
to_guess.erase(el2);
in_machine.erase(el);
out_machine.erase(el2);
}
for (auto [a,b] : ans)Answer(a,b);
}
/*
4
1 5
2 6
3 4
7 8
*/
# | 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... |