#include<bits/stdc++.h>
#include"icc.h"
using namespace std;
const int maxn=110;
const int maxk=7;
vector<int>v[maxn];
int faz_query(int x, int y, vector<int>a, vector<int>b){
int A[x], B[y];
for(int i=0;i<x;i++) A[i]=a[i];
for(int i=0;i<y;i++) B[i]=b[i];
return query(x,y,A,B);
}
int find(vector<int> a, vector<int> b){
int id=0;
for(int k=0;k<maxk;k++){
vector<int>aux;
for(int j=0;j<a.size();j++) if((j+1)&(1<<k)) aux.push_back(a[j]);
if(faz_query(aux.size(),b.size(),aux,b)) id+=(1<<k);
}
return a[id-1];
}
void run(int n){
for(int i=1;i<=n;i++) v[i].push_back(i);
for(int i=1;i<n;i++){
vector<int>a, b;
for(int k=0;;k++){
a.clear(); b.clear();
for(int j=1;j<=n;j++){
if(j&(1<<k)) for(int x : v[j]) a.push_back(x);
else for(int x : v[j]) b.push_back(x);
}
int at=faz_query(a.size(),b.size(),a,b);
if(at) break;
}
int u=find(a,b), w=find(b,a);
setRoad(u,w);
for(int x : v[w]) v[u].push_back(x);
v[w].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... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |