Submission #1244120

#TimeUsernameProblemLanguageResultExecution timeMemory
1244120moondarksideScales (IOI15_scales)C++20
Compilation error
0 ms0 KiB
#include<bits/stdc++.h> using namespace std; void init(int T); void orderCoins(); void answer(int W[]); int getMedian(int A, int B, int C); int getHeaviest(int A, int B, int C); int getLightest(int A, int B, int C); int getNextLightest(int A, int B, int C, int D); void init(int T) { return; } /* void answer(int W[]){ return; } vector<int> Coins={1,5,2,3,0,4}; int getMedian(int A, int B, int C){ vector<pair<int,int>> a={{Coins[A],A},{Coins[B],B},{Coins[C],C}}; sort(a.begin(),a.end()); return a[1].second; } int getHeaviest(int A, int B, int C){ vector<pair<int,int>> a={{Coins[A],A},{Coins[B],B},{Coins[C],C}}; sort(a.begin(),a.end()); return a[2].second; } int getLightest(int A, int B, int C){ vector<pair<int,int>> a={{Coins[A],A},{Coins[B],B},{Coins[C],C}}; sort(a.begin(),a.end()); return a[0].second; } int getNextLightest(int A, int B, int C, int D){ vector<pair<int,int>> a={{Coins[A],A},{Coins[B],B},{Coins[C],C},{Coins[D],D}}; sort(a.begin(),a.end()); for(int i=0;i<4;i++){ if(a[i].second==D){ i++; i%=4; return a[i].second; } } return a[0].second; } */ int BestComb(vector<vector<int>> Combs) { if(Combs.size()==1){ int W[6]; for(int i=0;i<6;i++){ W[i]=Combs[0][i]; } answer(W); return 0; } vector<int> BestW; int bestSplit=Combs.size(); vector<vector<int>> A; vector<vector<int>> B; vector<vector<int>> C; for(int a=0; a<6; a++) { for(int b=a+1; b<6; b++) { for(int c=b+1; c<6; c++) { vector<vector<int>> Am; vector<vector<int>> Bm; vector<vector<int>> Cm; for(int i=0; i<Combs.size(); i++) { if(Combs[i][a]>Combs[i][b] && Combs[i][a]>Combs[i][c]) { Am.push_back(Combs[i]); } if(Combs[i][b]>Combs[i][c] && Combs[i][b]>Combs[i][c]) { Bm.push_back(Combs[i]); } if(Combs[i][c]>Combs[i][b] && Combs[i][c]>Combs[i][a]) { Cm.push_back(Combs[i]); } } int size=max(Am.size(),max(Bm.size(),Cm.size())); if(size<bestSplit) { bestSplit=size; A=Am; B=Bm; C=Cm; BestW= {2,a,b,c}; } } } } for(int a=0; a<6; a++) { for(int b=a+1; b<6; b++) { for(int c=b+1; c<6; c++) { vector<vector<int>> Am; vector<vector<int>> Bm; vector<vector<int>> Cm; for(int i=0; i<Combs.size(); i++) { if(Combs[i][a]<Combs[i][b] && Combs[i][a]<Combs[i][c]) { Am.push_back(Combs[i]); } if(Combs[i][b]<Combs[i][c] && Combs[i][b]<Combs[i][a]) { Bm.push_back(Combs[i]); } if(Combs[i][c]<Combs[i][b] && Combs[i][c]<Combs[i][a]) { Cm.push_back(Combs[i]); } } int size=max(Am.size(),max(Bm.size(),Cm.size())); if(size<bestSplit) { bestSplit=size; A=Am; B=Bm; C=Cm; BestW= {0,a,b,c}; } } } } for(int a=0; a<6; a++) { for(int b=a+1; b<6; b++) { for(int c=b+1; c<6; c++) { vector<vector<int>> Am; vector<vector<int>> Bm; vector<vector<int>> Cm; for(int i=0; i<Combs.size(); i++) { if(Combs[i][a]<Combs[i][b] && Combs[i][a]>Combs[i][c]) { Am.push_back(Combs[i]); } if(Combs[i][a]>Combs[i][b] && Combs[i][a]<Combs[i][c]) { Am.push_back(Combs[i]); } if(Combs[i][b]<Combs[i][c] && Combs[i][b]>Combs[i][a]) { Bm.push_back(Combs[i]); } if(Combs[i][b]>Combs[i][c] && Combs[i][b]<Combs[i][a]) { Bm.push_back(Combs[i]); } if(Combs[i][c]<Combs[i][b] && Combs[i][c]>Combs[i][a]) { Cm.push_back(Combs[i]); } if(Combs[i][c]>Combs[i][b] && Combs[i][c]<Combs[i][a]) { Cm.push_back(Combs[i]); } } int size=max(Am.size(),max(Bm.size(),Cm.size())); if(size<bestSplit) { bestSplit=size; A=Am; B=Bm; C=Cm; BestW= {1,a,b,c}; } } } } for(int d=0; d<6; d++) { for(int a=0; a<6; a++) { for(int b=a+1; b<6; b++) { for(int c=b+1; c<6; c++) { if(a!=d && b!=d && c!=d) { vector<vector<int>> Am; vector<vector<int>> Bm; vector<vector<int>> Cm; for(int i=0; i<Combs.size(); i++) { vector<int> Temp={Combs[i][a],Combs[i][b],Combs[i][c],Combs[i][d]}; sort(Temp.begin(),Temp.end()); int index=0; for(int j=0;j<4;j++){ if (Temp[j]==Combs[i][d]){ index=j; } } if(index<3){ index++; } else{ index=0; } if(Temp[index]==Combs[i][a]){ Am.push_back(Combs[i]); } if(Temp[index]==Combs[i][b]){ Bm.push_back(Combs[i]); } if(Temp[index]==Combs[i][c]){ Cm.push_back(Combs[i]); } } int size=max(Am.size(),max(Bm.size(),Cm.size())); if(size<bestSplit) { bestSplit=size; A=Am; B=Bm; C=Cm; BestW= {3,a,b,c,d}; } } } } } } int best=0; if(BestW[0]==0){ best=getLightest(BestW[1],BestW[2],BestW[3]); } if(BestW[0]==1){ best=getMedian(BestW[1],BestW[2],BestW[3]); } if(BestW[0]==2){ best=getHeaviest(BestW[1],BestW[2],BestW[3]); } if(BestW[0]==3){ best=getNextLightest(BestW[1],BestW[2],BestW[3],BestW[4]); } if(best==BestW[1]){ return BestComb(A)+1; } if(best==BestW[2]){ return BestComb(B)+1; } if(best==BestW[3]){ return BestComb(C)+1; } return 1; } void buildPerm(vector<bool> Chosen,vector<vector<int>>& Perms,vector<int> T) { if(T.size()==6) { Perms.push_back(T); return; } for(int i=0; i<6; i++) { if(!Chosen[i]) { Chosen[i]=true; T.push_back(i); buildPerm(Chosen,Perms,T); T.pop_back(); Chosen[i]=false; } } } void orderCoins() { vector<vector<int>> Perms; vector<bool> C(6); buildPerm(C,Perms,vector<int>()); BestComb(Perms); }

Compilation message (stderr)

/usr/bin/ld: /tmp/ccFpVdIA.o: in function `BestComb(std::vector<std::vector<int, std::allocator<int> >, std::allocator<std::vector<int, std::allocator<int> > > >)':
scales.cpp:(.text+0x1281): undefined reference to `answer(int*)'
/usr/bin/ld: scales.cpp:(.text+0x3335): undefined reference to `getNextLightest(int, int, int, int)'
/usr/bin/ld: scales.cpp:(.text+0x3345): undefined reference to `getHeaviest(int, int, int)'
/usr/bin/ld: scales.cpp:(.text+0x3358): undefined reference to `getMedian(int, int, int)'
/usr/bin/ld: scales.cpp:(.text+0x336b): undefined reference to `getLightest(int, int, int)'
/usr/bin/ld: /tmp/cc1wE4w0.o: in function `main':
grader.c:(.text.startup+0x83): undefined reference to `init'
/usr/bin/ld: grader.c:(.text.startup+0x101): undefined reference to `orderCoins'
collect2: error: ld returned 1 exit status