# |
Submission time |
Handle |
Problem |
Language |
Result |
Execution time |
Memory |
141109 |
2019-08-06T18:37:44 Z |
shayan_p |
ICC (CEOI16_icc) |
C++14 |
|
6 ms |
504 KB |
// only miss the sun when it starts to snow
#include<bits/stdc++.h>
#include "icc.h"
#define unit icc
#define F first
#define S second
#define PB push_back
#define sz(s) int((s).size())
#define bit(n,k) (((n)>>(k))&1)
using namespace std;
typedef long long ll;
typedef pair<int,int> pii;
typedef pair<ll,ll> pll;
const int maxn=110,mod=1e9+7;
const ll inf=1e18;
int bos[maxn], n;
vector<int> v[maxn], A, B, vec, vec0, vec1;
int arr1[maxn], arr2[maxn];
bool ask(){
if(sz(A)==0 || sz(B)==0) return 0;
int N=sz(A), M=sz(B);
for(int i=0;i<N;i++)
arr1[i]= A[i]+1;
for(int i=0;i<M;i++)
arr2[i]= B[i]+1;
return query(N,M,arr1,arr2);
}
void operator += (vector<int>&a,vector<int>&b){
for(int x:b) a.PB(x);
}
void Merge(int a,int b){
a=bos[a], b=bos[b];
if(sz(v[a]) < sz(v[b])) swap(a,b);
for(int x:v[b]) bos[x]=a, v[a].PB(x);
v[b].clear();
}
int solve(vector<int> &v1, vector<int>&v2){
int bt=32-__builtin_clz(sz(v1));
B=v2;
int ans=0;
for(int i=0;i<bt;i++){
A.clear();
for(int j=0;j<sz(v1);j++)
if(bit(j,i)) A.PB(v1[j]);
if(ask()) ans^=(1<<i);
}
return v1[ans];
}
void proc(){
vec.clear();
for(int i=0;i<n;i++){
if(bos[i]==i) vec.PB(i);
}
int bt=32-__builtin_clz(sz(vec));
int df=-1;
vector<int> rndm(bt);
for(int i=0;i<bt;i++)
rndm[i]=i;
random_shuffle(rndm.begin(), rndm.end() );
int bts=0;
for(int i:rndm){
A.clear(), B.clear();
for(int j=0;j<sz(vec);j++){
if(bit(j,i)) A+= v[vec[j]];
else B+= v[vec[j]];
}
if(ask()){
df=i;
break;
}
else{
bts^=(1<<i);
}
}
assert(df!=-1);
vec0=A, vec1=B;
int u=solve(vec0,vec1);
vec0.clear(), vec0.PB(u);
vec1.clear();
for(int i=0;i<sz(vec);i++){
if(bit(i,df)) continue;
for(int j=0;j<bt;j++){
if(bit(bts,j) && bit(i,j)!=bit(u,j)) goto Hell;
}
vec1+= v[vec[i]];
Hell:;
}
int v=solve(vec1,vec0);
setRoad(u+1,v+1), Merge(u,v);
}
void run(int N){
srand(time(0));
::n=N;
for(int i=0;i<n;i++)
bos[i]=i, v[i].PB(i);
for(int i=0;i<n-1;i++)
proc();
}
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Incorrect |
4 ms |
504 KB |
Wrong road! |
2 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Incorrect |
6 ms |
380 KB |
Wrong road! |
2 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Incorrect |
5 ms |
504 KB |
Wrong road! |
2 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Incorrect |
5 ms |
504 KB |
Wrong road! |
2 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Incorrect |
5 ms |
504 KB |
Wrong road! |
2 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Incorrect |
5 ms |
504 KB |
Wrong road! |
2 |
Halted |
0 ms |
0 KB |
- |