Submission #198382

#TimeUsernameProblemLanguageResultExecution timeMemory
198382DavidDamianMechanical Doll (IOI18_doll)C++11
Compilation error
0 ms0 KiB
#include "doll.h" #include<bits/stdc++.h> using namespace std; #define debug(x) cerr<<#x<<" = "<<x<<endl struct parent { int p,edge; }; vector<int> X; vector<int> Y; map<int,parent> memo; int NEXT_FREE_INDEX=1; int limit; void createTree(int i,int lv,int sum,int unused) { if(lv==limit-1){ //Last level of switches if(unused==1) X.push_back(-1); else{ X.push_back(sum); parent x={i,0}; memo[sum]=x; } sum+=(1<<lv); parent x={i,1}; Y.push_back(sum); memo[sum]=x; } else{ int child_size=(1<<(limit-lv-1)); if(unused>=child_size){ //Drop left child X.push_back(-1); Y.push_back(-NEXT_FREE_INDEX); NEXT_FREE_INDEX++; createTree(NEXT_FREE_INDEX-1,lv+1,limit,sum+(1<<lv),unused-child_size); } else{ X.push_back(-NEXT_FREE_INDEX); NEXT_FREE_INDEX++; Y.push_back(0); createTree(NEXT_FREE_INDEX-1,lv+1,limit,sum,unused); Y[i-1]=-NEXT_FREE_INDEX; NEXT_FREE_INDEX++; createTree(NEXT_FREE_INDEX-1,lv+1,limit,sum+(1<<lv),0); } } } int logn[200005]; void create_circuit(int m, vector<int> A) { for(int i=2;i<=200000;i++){ logn[i]=logn[(i+1)/2]+1; } A.push_back(0); int n=A.size(); vector<int> C(m+1); for(int i=0;i<=m;i++){ C[i]=-1; } int LOG=logn[n]; NEXT_FREE_INDEX++; limit=LOG; createTree(1,0,0,(1<<LOG)-n); /*for(int i=0;i<n;i++){ cout<<X[i]<<" "<<Y[i]<<endl; }*/ int j=0; for(auto x: memo){ int p=x.second.p; int edge=x.second.edge; if(edge==0) X[p-1]=A[j]; else Y[p-1]=A[j]; j++; } memo.clear(); /*for(int i=0;i<n;i++){ cout<<X[i]<<" "<<Y[i]<<endl; }*/ answer(C, X, Y); }

Compilation message (stderr)

doll.cpp: In function 'void createTree(int, int, int, int)':
doll.cpp:35:82: error: too many arguments to function 'void createTree(int, int, int, int)'
   35 |             createTree(NEXT_FREE_INDEX-1,lv+1,limit,sum+(1<<lv),unused-child_size);
      |                                                                                  ^
doll.cpp:14:6: note: declared here
   14 | void createTree(int i,int lv,int sum,int unused)
      |      ^~~~~~~~~~
doll.cpp:41:63: error: too many arguments to function 'void createTree(int, int, int, int)'
   41 |             createTree(NEXT_FREE_INDEX-1,lv+1,limit,sum,unused);
      |                                                               ^
doll.cpp:14:6: note: declared here
   14 | void createTree(int i,int lv,int sum,int unused)
      |      ^~~~~~~~~~
doll.cpp:44:66: error: too many arguments to function 'void createTree(int, int, int, int)'
   44 |             createTree(NEXT_FREE_INDEX-1,lv+1,limit,sum+(1<<lv),0);
      |                                                                  ^
doll.cpp:14:6: note: declared here
   14 | void createTree(int i,int lv,int sum,int unused)
      |      ^~~~~~~~~~