#include "park.h"
#include <bits/stdc++.h>
using namespace std;
static int visited[1405];
vector <int> leaf;
int cnt[1405];
int p[1405];
vector <vector<int>> v(1405);
int N;
bool check(int node, int pref, vector <int> v) {
if (node > N-1 || node < 0) return false;
int a[N];
for (int i = 1; i <= pref; i++) {
a[v[i]] = 1;
}
for (int i = 0; i < N; i++) {
if (visited[i]) a[i] = 1;
}
return Ask(0,node,a);
}
bool check1(int node, int pref, vector <int> v) {
if (node > N-1 || node < 0) return false;
int a[N];
for (int i = 0; i < N; i++) {
if (visited[i]) a[i] = 1;
}
for (int i = 1; i <= v.size()-1; i++) {
a[v[i]] = 0;
}
for (int i = 1; i <= pref; i++) {
a[v[i]] = 1;
}
return Ask(0,node,a);
}
void Detect(int T, int n) {
N = n;
int root = 0;
visited[root] = 0;
stack <int> s;
for (int i = 0; i < N; i++) {
if (visited[i]) continue;
s.push(i);
while (!s.empty()) {
int node = s.top();
vector <int> nodes;
nodes.push_back(-1);
for (int j = 0; j < N; j++) {
if (!visited[j]) nodes.push_back(j);
}
int l = 0; int r = nodes.size()-1;
int res = -1;
while (l <= r) {
int mid = (l+r)/2;
if (check(node,mid,nodes)) {
res = nodes[mid];
r = mid - 1;
} else {
l = mid + 1;
}
}
if (res != -1) {
s.push(res);
continue;
}
l = 0; r = leaf.size();
while (l <= r) {
int mid = (l+r)/2;
if (check1(node,mid,leaf)) {
res = leaf[mid];
r = mid - 1;
} else {
l = mid + 1;
}
}
cnt[res]++;
if (cnt[res] > 1) {
auto it = find(leaf.begin(),leaf.end(),res);
leaf.erase(it);
}
p[node] = res;
leaf.push_back(node);
visited[node] = 1;
s.pop();
}
}
for (int i = 0; i < N; i++) {
Answer(min(i,p[i]),max(i,p[i]));
v[i].push_back(p[i]);
v[p[i]].push_back(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... |