#include "minerals.h"
#include <bits/stdc++.h>
#define ll long long
#define ld long double
#define ff first
#define ss second
#define vi vector<int>
#define vl vector<long long>
#define pii pair<int,int>
#define pll pair<long long, long long>
#define pb push_back
#define rep(i, b) for(int i = 0; i < (b); ++i)
#define rep2(i,a,b) for(int i = a; i <= (b); ++i)
#define rep3(i,a,b,c) for(int i = a; i <= (b); i+=c)
#define count_bits(x) __builtin_popcountll((x))
#define all(x) (x).begin(),(x).end()
#define siz(x) (int)(x).size()
#define forall(it,x) for(auto& it:(x))
using namespace std;
//mt19937 mt;void random(){mt.seed(chrono::time_point_cast<chrono::milliseconds>(chrono::high_resolution_clock::now()).time_since_epoch().count());}
//ll rand(ll a, ll b) {return a + (mt() % (b-a+1));}
const int INF = 1e9+50;
const ll INF_L = 1e18+40;
const ll MOD = 1e9+7;
bool is_on[86001];
int ask(int x)
{
    //cout << x << " x\n";
    if(is_on[x]) is_on[x] = 0;
    else is_on[x] = 1;
    return Query(x);
}
pii seg[86001];
int cur_pref[86001];
void Solve(int n) 
{
    rep2(i,1,n*2)
    {
        seg[i] = {1,2*n};
    }
    int ans_count = 0;
    int cur_dif = 0;
    rep2(i,1,n)
    {
        cur_dif = ask(i);
    }
    vector<pii> prefs = {{1,n*2}};
    rep2(i,1,n*2)
    {
        cur_pref[i] = 0;
    }
    while(ans_count != 2*n)
    {
        //cout << cur_dif << " cur\n";
        //rep2(i,1,n*2)
       // {
        //    cout << seg[i].ff << " " << seg[i].ss << " " << i << " step_seg\n";
        //}
        //cout << "\n";
        ans_count = 0;
        rep2(i,1,n*2)
        {
            if(seg[i].ff != seg[i].ss)
            {
                int new_dif = ask(i);
                int mid = (prefs[cur_pref[i]].ff + prefs[cur_pref[i]].ss)/2;
                if(is_on[i])
                {
                    if(new_dif > cur_dif)
                    {
                        seg[i].ff = mid+1;
                    }
                    else
                    {
                        seg[i].ss = mid;
                    }
                }
                else
                {
                    if(new_dif < cur_dif)
                    {
                        seg[i].ff = mid+1;
                    }
                    else
                    {
                        seg[i].ss = mid;
                    }
                }
                ask(i);
            }
            else
            {
                ans_count++;
            }
        }
        vector<pii> new_pref;
        forall(it,prefs)
        {
            if(it.ff == it.ss) continue;
            int mid = (it.ff+it.ss)/2;
            rep2(i,(it.ff+mid)/2+1,mid)
            {
                cur_dif = ask(i);
            }
            rep2(i,mid+1,(mid+1+it.ss)/2)
            {
                cur_dif = ask(i);
            }
            new_pref.pb({it.ff,mid});
            new_pref.pb({mid+1,it.ss});
        }
        prefs = new_pref;
        vector<pii> vsort;
        rep2(i,1,n*2)
        {
            if(seg[i].ff != seg[i].ss)
            {
                vsort.pb({seg[i].ff,i});
            }
        }
        sort(all(vsort));
        int cur_p = 0;
        forall(it,vsort)
        {
            while(prefs[cur_p].ff != seg[it.ss].ff)
            {
                cur_p++;
            }
            cur_pref[it.ss] = cur_p;
        }
    }
    rep2(i,1,n*2)
    {
      //  cout << i << " " << seg[i].ff << " seg\n";
        if(i < seg[i].ff)
        {
            Answer(i,seg[i].ff);
        }
    }
}
| # | 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... |