#include "chameleon.h"
#include <bits/stdc++.h>
using namespace std;
void Solve(int N) {
vector<set<int>> adj(N << 1);
for (int i = 0; i < (N << 1); i++) {
for (int j = i + 1; j < (N << 1); j++) {
vector<int> toquer = {i + 1, j + 1};
int ret = Query(toquer);
if (ret == 1) {
adj[i].insert(j);
adj[j].insert(i);
}
}
}
vector<pair<int, int>> toign;
for (int i = 0; i < (N << 1); i++) {
if (adj[i].empty())
continue;
else if (adj[i].size() == 1) {
Answer(i + 1, (*adj[i].begin()) + 1);
adj[*adj[i].begin()].clear();
adj[i].clear();
} else {
vector<int> tmp;
for (auto x : adj[i])
tmp.push_back(x);
for (int k = 0; k < 3; k++) {
vector<int> toask = {i + 1};
for (int j = 0; j < 3; j++)
if (j != k)
toask.push_back(tmp[j] + 1);
int ans = Query(toask);
if (ans == 1) {
toign.emplace_back(i, tmp[k]);
break;
}
}
}
}
for (auto &[x, y] : toign) {
adj[x].erase(y);
adj[y].erase(x);
}
for (int i = 0; i < (N << 1); i++) {
if (adj[i].empty())
continue;
else {
Answer(i + 1, (*adj[i].begin()) + 1);
adj[*adj[i].begin()].clear();
adj[i].clear();
}
}
}
| # | 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... |