Submission #141106

# Submission time Handle Problem Language Result Execution time Memory
141106 2019-08-06T18:28:01 Z shayan_p ICC (CEOI16_icc) C++14
Compilation error
0 ms 0 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;

    vector<int> rndm(bt);
    for(int i=0;i<bt;i++)
	bt[i]=i;
    random_shuffle(rndm.begin(), rndm.end() );
    
    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;
	}
    }
    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){
    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();
}

Compilation message

icc.cpp: In function 'void proc()':
icc.cpp:87:6: error: invalid types 'int[int]' for array subscript
  bt[i]=i;
      ^