# |
Submission time |
Handle |
Problem |
Language |
Result |
Execution time |
Memory |
141104 |
2019-08-06T18:16:19 Z |
shayan_p |
ICC (CEOI16_icc) |
C++14 |
|
210 ms |
632 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];
/*
void setRoad(int a,int b){
cout<<"HEYY "<<a<<" "<<b<<endl;
}
bool query(int n,int m,int *a,int *b){
cout<<n<<": ";
for(int i=0;i<n;i++) cout<<a[i]<<" ";
cout<<endl;
cout<<m<<": ";
for(int i=0;i<m;i++) cout<<b[i]<<" ";
cout<<endl;
bool x; cin>>x;
return x;
}
*/
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;
for(int i=0;i<bt;i++){
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;
}
}
assert(df!=-1);
vec0=A, vec1=B;
int u=solve(vec0,vec1), v=solve(vec1,vec0);
setRoad(u+1,v+1), Merge(u,v);
}
void run(int N){
::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 |
Correct |
8 ms |
504 KB |
Ok! 96 queries used. |
2 |
Correct |
9 ms |
504 KB |
Ok! 103 queries used. |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
42 ms |
504 KB |
Ok! 554 queries used. |
2 |
Correct |
55 ms |
504 KB |
Ok! 711 queries used. |
3 |
Correct |
54 ms |
504 KB |
Ok! 717 queries used. |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
136 ms |
504 KB |
Ok! 1415 queries used. |
2 |
Correct |
168 ms |
604 KB |
Ok! 1703 queries used. |
3 |
Correct |
148 ms |
632 KB |
Ok! 1526 queries used. |
4 |
Correct |
155 ms |
504 KB |
Ok! 1588 queries used. |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
166 ms |
504 KB |
Ok! 1530 queries used. |
2 |
Correct |
153 ms |
568 KB |
Ok! 1548 queries used. |
3 |
Correct |
168 ms |
564 KB |
Ok! 1698 queries used. |
4 |
Correct |
146 ms |
580 KB |
Ok! 1491 queries used. |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
210 ms |
504 KB |
Ok! 1754 queries used. |
2 |
Correct |
174 ms |
504 KB |
Ok! 1706 queries used. |
3 |
Correct |
167 ms |
504 KB |
Ok! 1705 queries used. |
4 |
Correct |
158 ms |
604 KB |
Ok! 1633 queries used. |
5 |
Correct |
147 ms |
504 KB |
Ok! 1497 queries used. |
6 |
Correct |
161 ms |
504 KB |
Ok! 1577 queries used. |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Incorrect |
165 ms |
504 KB |
Too many queries! 1689 out of 1625 |
2 |
Halted |
0 ms |
0 KB |
- |