#include "chameleon.h"
#include <bits/stdc++.h>
using namespace std;
#define all(x) x.begin(), x.end()
using pint = pair<int, int>;
vector<int> adj[1001];
bool done[1001];
int nxt[1001];
int dnc(int i, vector<int>::iterator l, vector<int>::iterator r) {
if (r - l == 1) return *l;
auto m = l + (r - l) / 2;
vector<int> arr(l, m);
arr.emplace_back(i);
if (Query(arr) < arr.size()) return dnc(i, l, m);
else return dnc(i, m, r);
}
void recurse(const vector<int> &arr) {
if (arr.size() <= 1) return;
vector<int> a, b;
for (int i: arr) {
a.emplace_back(i);
if (a.size() > 1 and Query(a) < a.size()) {
a.pop_back();
b.emplace_back(i);
}
}
for (int i: b) {
for (vector<int> cur = a; not cur.empty();) {
int j = dnc(i, all(cur));
adj[i].emplace_back(j);
adj[j].emplace_back(i);
cur.erase(find(all(cur), j));
cur.emplace_back(i);
if (Query(cur) == cur.size()) break;
cur.pop_back();
}
}
recurse(b);
}
void dfs(int i, int par, bool b) {
adj[i].erase(find(all(adj[i]), par));
if (nxt[i]) return;
done[i] = true;
assert(adj[i].size() == 1);
if (b) Answer(i, adj[i][0]);
dfs(adj[i][0], i, not b);
}
void Solve(int N) {
vector<int> arr(N << 1);
iota(all(arr), 1);
recurse(arr);
// for (int i = 1; i <= 2 * N; ++i) {
// for (int j: adj[i]) cerr << i << " " << j << endl;
// }
// cerr << endl;
bool done[N * 2 + 1]{};
int type[N * 2 + 1]{};
vector<pint> rem;
for (int i = 1; i <= N * 2; ++i) {
if (adj[i].size() == 1) {
done[i] = done[adj[i][0]] = true;
} else if (adj[i].size() == 3) {
if (Query({i, adj[i][0], adj[i][1]}) == 1) nxt[i] = adj[i][2];
else if (Query({i, adj[i][0], adj[i][2]}) == 1) nxt[i] = adj[i][1];
else nxt[i] = adj[i][0];
adj[i].erase(find(all(adj[i]), nxt[i]));
}
}
for (int i = 1; i <= N * 2; ++i) {
if (nxt[i]) adj[nxt[i]].erase(find(all(adj[nxt[i]]), i));
}
for (int i = 1; i <= N * 2; ++i) {
if (adj[i][0] > i) Answer(i, adj[i][0]);
}
}
# | 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... |