#include <bits/stdc++.h>
#include "minerals.h"
using namespace std;
typedef long long ll;
#define st first
#define nd second
#define pb push_back
const int maxn = 1e5+7;
bool zaznaczone[maxn];
vector<pair<int,int>> wyniki;
void rek(vector<int> numery){
if(numery.size() == 2){
wyniki.pb({numery[0],numery[1]});
return;
}
vector<int> jeden,dwa;
int licznik = 0,nowy,stary = 0;
for(auto i : numery){
nowy = Query(i);
licznik++;
if(nowy == stary){
zaznaczone[i] = 1;
}
if(2*(licznik-nowy) >= numery.size()/2){
stary = nowy;
for(int j=0;j<licznik;j++){
if(zaznaczone[i])
continue;
nowy = Query(numery[j]);
if(nowy == stary){
jeden.pb(numery[j]);
}
else{
dwa.pb(numery[j]);
}
stary = nowy;
}
break;
}
stary = nowy;
}
for(auto i : numery){
if(zaznaczone[i]){
nowy = Query(i);
zaznaczone[i] = 0;
jeden.pb(i);
}
}
for(int i=licznik;i<numery.size();i++){
dwa.pb(numery[i]);
}
rek(jeden);
rek(dwa);
return;
}
void Solve(int n) { //Query(x) // Answer(a,b)
vector<int> vect;
for(int i=1;i<=2*n;i++){
vect.pb(i);
}
rek(vect);
for(auto i : wyniki){
Answer(i.st,i.nd);
}
}
# | 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... |