#include "icc.h";
#include <bits/stdc++.h>
using namespace std;
#define pb push_back
#define X first
#define Y second
//#define int long long
mt19937 rng(time(0));
bool randint(int l,int r){
return uniform_int_distribution < int > (l,r) (rng);
}
void maxx(int &a,int b){if(b>a) a=b;}
void minn(int &a,int b){if(b<a) a=b;}
bool cmax(int &a,int b){if(b>a) {a=b;return 1;}return 0;}
using ll = long long;
using ii = pair < int , int >;
const int MAX=100+3,inf=1e9,mod=1e9+7;
//int tim=0,sz[MAX];
bitset < MAX > b,C;
int pa[MAX];
int A[MAX],B[MAX];
bool ok[MAX][MAX];
/*vector < int > V[MAX];
int query ( int n,int m,int a[],int b[]){
return 1;
}
void setRoad(int u,int v){cout<<u<<' '<<v<<'\n';}*/
void run(int N){
int n=N;
vector < int > vec;
for(int i=1;i<=n;i++) pa[i]=i,vec.pb(i);
for(int k=1;k<n;k++){
int cn=0,m=0;
memset(ok,0,sizeof ok);
while(1){
int M=0;
for(int z=0;z<200;z++){
for(int i=1;i<=n;i++)b[i]=randint(0,1);
cn=0;m=0;
//shuffle(vec.begin(),vec.end(),rng);
for(int i:vec)if(b[pa[i]])
A[cn++]=i;else B[m++]=i;
int dem=0;
for(int i=0;i<cn;i++)
for(int j=0;j<m;j++)dem+=!ok[A[i]][B[j]];
if(cmax(M,dem)) C=b;
}
cn=0;m=0;
shuffle(vec.begin(),vec.end(),rng);
for(int i:vec)if(C[pa[i]])
A[cn++]=i;else B[m++]=i;
if(query(cn,m,A,B))break;
for(int i=0;i<cn;i++)
for(int j=0;j<m;j++)
ok[A[i]][B[j]]=ok[B[j]][A[i]]=1;
}
for(int i=__lg(cn);i>=0;i--)
if(cn>(1<<i) && query(cn-(1<<i),m,A,B))cn-=(1<<i);
for(int i=__lg(m);i>=0;i--)
if(m>(1<<i) && query(cn,m-(1<<i),A,B))m-=(1<<i);
int u=A[cn-1],v=B[m-1];
setRoad(u,v);
u=pa[u];v=pa[v];
for(int i=1;i<=n;i++) if(pa[i]==v) pa[i]=u;
}
}
Compilation message
icc.cpp:1:17: warning: extra tokens at end of #include directive
1 | #include "icc.h";
| ^
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
6 ms |
512 KB |
Ok! 97 queries used. |
2 |
Correct |
6 ms |
512 KB |
Ok! 98 queries used. |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
57 ms |
488 KB |
Ok! 549 queries used. |
2 |
Correct |
149 ms |
492 KB |
Ok! 733 queries used. |
3 |
Correct |
153 ms |
588 KB |
Ok! 720 queries used. |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
335 ms |
492 KB |
Ok! 1363 queries used. |
2 |
Correct |
854 ms |
492 KB |
Ok! 1846 queries used. |
3 |
Correct |
295 ms |
488 KB |
Ok! 1340 queries used. |
4 |
Correct |
533 ms |
488 KB |
Ok! 1567 queries used. |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
507 ms |
488 KB |
Ok! 1511 queries used. |
2 |
Correct |
518 ms |
492 KB |
Ok! 1521 queries used. |
3 |
Correct |
742 ms |
492 KB |
Ok! 1751 queries used. |
4 |
Correct |
293 ms |
492 KB |
Ok! 1350 queries used. |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
793 ms |
500 KB |
Ok! 1752 queries used. |
2 |
Correct |
752 ms |
496 KB |
Ok! 1747 queries used. |
3 |
Correct |
763 ms |
492 KB |
Ok! 1754 queries used. |
4 |
Correct |
694 ms |
492 KB |
Ok! 1674 queries used. |
5 |
Correct |
409 ms |
492 KB |
Ok! 1436 queries used. |
6 |
Correct |
623 ms |
492 KB |
Ok! 1654 queries used. |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
740 ms |
488 KB |
Too many queries! 1742 out of 1625 |
2 |
Halted |
0 ms |
0 KB |
- |