#include "park.h"
#include <bits/stdc++.h>
using namespace std;
static int Place[1400];
mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
int n;
int ans[1405];
void daq(int l,int r,vector<int> v){
if(l>r) return;
if(l==r){
ans[l]=v.back();
return;
}else if(r==1&&l==0){
ans[0]=0;
ans[1]=(v.back()==0 ? v[0] : v[1]);
return;
}
int mid=uniform_int_distribution<int>(0,(int)v.size()-1)(rng);
while(v[mid]==0) mid=uniform_int_distribution<int>(0,(int)v.size()-1)(rng);
int y=v[mid];
vector<int> v1;
vector<int> v2;
for (int i = 0; i < v.size(); ++i)
{
if(v[i]==0||v[i]==y){
v1.push_back(v[i]);
continue;
}
Place[v[i]]=0;
if(Ask(0,y,Place)) v2.push_back(v[i]);
else v1.push_back(v[i]);
Place[v[i]]=1;
}
daq(l,l+v1.size()-1,v1);
daq(l+v1.size(),r,v2);
}
void Detect(int T, int N){
n=N;
vector<int> v;
for (int i = 0; i < n; ++i)
{
Place[i]=1;
v.push_back(i);
}
shuffle(v.begin(),v.end(),rng);
ans[0]=0;
ans[n-1]=n-1;
daq(0,n-1,v);
for (int i = 1; i < n; ++i)
{
int x=ans[i-1];
int y=ans[i];
if(x>y) swap(x,y);
Answer(x,y);
}
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... |