#include "minerals.h"
#include <bits/stdc++.h>
using namespace std;
vector <int> a, b;
static int cnt = 0, n, m;
void rec(int l, int r, int k, vector <int> q) {
if (l == r)
return Answer(a[l], q[0]), void();
int m = l + r >> 1, lk = k, rk = k;
vector <int> lft, rgt;
if (k & 1) {
for (int i = m + 1; i <= r; i++)
cnt = Query(a[i]);
rk ^= 1;
} else {
for (int i = l; i <= m; i++)
cnt = Query(a[i]);
lk ^= 1;
}
int lneed = m - l + 1, rneed = r - m;
for (int j : q) {
if (lft.size() == lneed) {
rgt.push_back(j);
} else if (rgt.size() == rneed) {
lft.push_back(j);
} else {
int tmp = Query(j);
if (tmp == cnt) {
lft.push_back(j);
} else {
rgt.push_back(j);
}
cnt = tmp;
}
}
rec(l, m, lk, lft);
rec(m + 1, r, rk, rgt);
}
void Solve(int N) {
n = N, m = 2 * n;
for (int i = 1; i <= m; i++) {
int tmp = Query(i);
if (tmp != cnt)
a.push_back(i);
else
b.push_back(i);
cnt = tmp;
}
rec(0, n - 1, 1, b);
}
# | 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... |