This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include "minerals.h"
#include<bits/stdc++.h>
using namespace std;
typedef int ll;
ll n,i,j,k,l,r,x,y,z,w,s,t,perm[1100000];
vector<ll> v,u;
void dnc(vector<ll> v,vector<ll> u)
{
    //printf("(%lld %lld)\n",v.size(),u.size());
    ll i,m=v.size();
    ll mid=m/2,x,s=0;
    if(m==1)
    {
        perm[v[0]]=u[0];
        return;
    }
    for(i=0;i<mid;i++)
    {
    //    printf("! %lld\n",v[i]);
        x=Query(v[i]);
        s++;
    }
    vector<ll> v1,v2,u1,u2;
    for(i=0;i<mid;i++)
    {
        v1.push_back(v[i]);
    }
    for(i=mid;i<m;i++)
    {
        v2.push_back(v[i]);
    }
    for(i=0;i<m;i++)
    {
     //   printf("! %lld\n",u[i]);
        y=Query(u[i]);
        s++;
        y=s-y;
      //  printf("(%lld)\n",y);
        if(y>0)
            u1.push_back(u[i]);
        else
            u2.push_back(u[i]);
          //  printf("! %lld\n",u[i]);
        Query(u[i]);
        s--;
    }
    for(i=0;i<mid;i++)
    {
      //  printf("! %lld\n",v[i]);
        Query(v[i]);
        s--;
    }
    dnc(v1,u1);
    dnc(v2,u2);
}
void f()
{
    ll i,x=0,y;
    for(i=1;i<=n*2;i++)
    {
        y=Query(i);
        if(y>x)
        {
            v.push_back(i);
            x++;
            continue;
        }
        else
        {
            Query(i);
            u.push_back(i);
            continue;
        }
    }
}
void Solve(ll N) {
   n=N;
   f();
   for(i=0;i<v.size();i++)
   {
       Query(v[i]);
   }
   dnc(v,u);
   for(i=1;i<=n*2;i++)
   {
       if(perm[i]==0)
        continue;
       Answer(i,perm[i]);
   }
}
Compilation message (stderr)
minerals.cpp: In function 'void dnc(std::vector<int>, std::vector<int>)':
minerals.cpp:11:16: warning: variable 'x' set but not used [-Wunused-but-set-variable]
   11 |     ll mid=m/2,x,s=0;
      |                ^
minerals.cpp: In function 'void Solve(ll)':
minerals.cpp:79:13: warning: comparison of integer expressions of different signedness: 'll' {aka 'int'} and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   79 |    for(i=0;i<v.size();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... |