#include "minerals.h"
#include<bits/stdc++.h>
using namespace std;
mt19937 rng(time(0));
void slv(vector<int> v1, vector<int> v2, int z) {
if((int)v1.size() == 1) {
Answer(v1[0], v2[0]);
return;
}
int kl = z;
int n = (int)v1.size();
vector<int> h11, h12, h21, h22;
for(int i = 0; i < n / 2; i++) h11.push_back(v1[i]);
for(int i = n / 2; i < n; i++) h21.push_back(v1[i]);
map<int, int> mp, mp1;
int kl2 = 0;
//shuffle(v2.begin(), v2.end(), rng);
for(int i = 0; i < n; i++) {
int k = Query(v2[i]);
if(k == kl) h12.push_back(v2[i]), mp[i] = 1;
else h22.push_back(v2[i]), mp1[v2[i]] = 1;
kl = k;
}
if(n >= 4) {
for(int i = n / 4; i < n / 2; i++) kl = Query(v1[i]);
for(int i = 0; i < n; i++) if(mp[i] == 1) kl = Query(v2[i]);
}
slv(h11, h12, kl);
swap(h21, h22);
int S = (int)h21.size();
for(int i = S / 2; i < S; i++) {
kl = Query(h21[i]);
}
slv(h21, h22, kl);
}
void Solve(int n) {
vector<int> v1, v2;
int kl = 0;
for(int i = 1; i <= 2 * n; i++) {
int k = Query(i);
if(k == kl) v2.push_back(i);
else v1.push_back(i);
kl = k;
}
for(int i = n / 2; i < n; i++) Query(v1[i]);
for(auto i : v2) kl = Query(i);
slv(v1, v2, kl);
}
# | 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... |