#include <bits/stdc++.h>
#include "minerals.h"
using namespace std;
void Solve(int N){
    int total = 2 * N;
    vector<int> lo(total + 1, 1), hi(total + 1, total);
    vector<int> last_query(total + 1, -1);
    bool changed = true;
    while (changed) {
        changed = false;
        unordered_map<int, vector<int>> bucket;
        for (int i = 1; i <= total; i++) {
            if (lo[i] < hi[i]) {
                int mid = lo[i] + (hi[i] - lo[i]) / 2;
                bucket[mid].push_back(i);
                changed = true;
            }
        }
        for (auto &p : bucket) {
            int mid = p.first;
            bool response = Query(mid);
            for (int idx : p.second) {
                if (last_query[idx] == -1) {
                    last_query[idx] = response;
                } else {
                    if (response == last_query[idx]) {
                        hi[idx] = mid;
                    } else {
                        lo[idx] = mid + 1;
                        last_query[idx] = response;
                    }
                }
            }
        }
    }
    for (int i = 1; i <= total; i++) {
        Answer(i, lo[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... |