#include "minerals.h"
#include<bits/stdc++.h>
using namespace std;
void Solve(int n)
{
const int N=n*2;
int last=0;
vector<int>A,B;
for(int i=1;i<=N;i++)
{
int u=Query(i);
if(u!=last){A.push_back(i);}
else{B.push_back(i);}
last=u;
}
for(int i=1;i<=N;i++){Query(i);}
vector<pair<int,int>>G(n,{0,n-1});
vector<vector<int>>V(n);
while(true)
{
bool cv=0;
for(int i=0;i<n;i++)
{
if(G[i].first==G[i].second){continue;}
cv=1;
const int mid=(G[i].first+G[i].second)>>1;
V[mid].push_back(i);
}
if(cv==0){break;}
for(int i=0;i<n;i++)
{
last=Query(A[i]);
for(int u : V[i])
{
int t=Query(B[u]);
if(t==last)
{
G[u].second=i;
}
else
{
G[u].first=i+1;
}
Query(B[u]);
}
V[i].clear();
}
for(int u : A){Query(u);}
}
for(int i=0;i<n;i++)
{
Answer(A[G[i].first],B[i]);
}
}
# | 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... |