#include "park.h"
#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define pb push_back
#define ff first
#define sd second
const int mxN = 1500;
ll n;
random_device rd;
mt19937_64 gen(rd());
ll query(ll x, ll y, vector<ll> v){
if(x > y) swap(x, y);
// cout << x << ' ' << y << '\n';
// cout << " --> ";
// for(auto it : v) cout << it << ' ';
// cout << endl;
int place[n];
for(int i = 0; i < n; i++) place[i] = 0;
for(auto it : v) place[it] = 1;
return Ask(x, y, place);
}
void ans(ll x, ll y){
if(x > y) swap(x, y);
// cout << x << ' ' << y << endl;
Answer(x, y);
}
void f(vector<ll> v){
// cout << " ------> ";
// for(auto it : v) cout << it << ' ';
// cout << endl;
ll sz = v.size();
if(sz == 1) return;
if(sz == 2){
ans(v[0], v[1]);
return;
}
uniform_int_distribution<ll> dis(0, sz - 1);
ll at = v[dis(gen)],sz1 = 0;
vector<vector<ll>> v1;
vector<ll> vv;
for(auto it : v) if(it != at) vv.pb(it);
for(auto it : v){
if(it == at) continue;
if(query(at, it, {at, it})) ans(at, it);
bool ok = true;
for(int i = 0; i < sz1; i++) if(query(it, v1[i][0], vv)){
ok = false;
v1[i].pb(it);
break;
}
if(ok){
sz1++;
v1.pb({it});
}
}
// cout << " --> " << sz1 << endl;
for(int i = 0; i < sz1; i++){
f(v1[i]);
}
}
void Detect(int T, int N) {
n = N;
vector<ll> v;
for(int i = 0; i < n; i++) v.pb(i);
f(v);
return;
}
| # | 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... |