Submission #136930

#TimeUsernameProblemLanguageResultExecution timeMemory
136930amiratouScales (IOI15_scales)C++14
0 / 100
4 ms504 KiB
#include "scales.h" #include <bits/stdc++.h> #define pb push_back using namespace std; vector<vector<int> > vec; void init(int T) { vec.resize(720); vector<int> perm={1,2,3,4,5,6}; int idx=0; do{ vec[idx++]=perm; }while(next_permutation(perm.begin(),perm.end())); } int gnl(vector<int> G,int a,int b,int c,int d){ int idx=0,j=-1; for (int i = 1; i < 6; ++i) if(G[i]==d){idx=i;break;} for (int i = idx+1; i < 6; ++i) if(G[i]==a||G[i]==b||G[i]==c){j=i;break;} if(j==-1) for (int i = 0; i < 6; ++i) if(G[i]==a||G[i]==b||G[i]==c)return G[i]; return G[j]; } void orderCoins() { bool valid[720]; memset(valid,1,sizeof valid); vector<int> ans; int W[6],A[3],B[3],C[3],D[3]; int q=getLightest(1,2,3),q2=getHeaviest(1,2,3); A[0]=q,A[2]=q2,A[1]=6-q-q2; q=getLightest(4,5,6),q2=getHeaviest(4,5,6); B[0]=q,B[2]=q2,B[1]=15-q-q2; q=getMedian(A[0],A[2],B[0]),q2=getMedian(A[1],B[1],B[2]); C[1]=q; if(q==A[0])C[2]=A[2],C[0]=B[0]; else if(q==A[2])C[0]=A[0],C[2]=B[0]; else C[0]=A[0],C[2]=A[2]; D[1]=q2; if(q2==B[1])D[0]=A[1],D[2]=B[2]; else if(q2==A[1])D[0]=B[1],D[2]=B[2]; else D[0]=B[1],D[2]=A[1]; int ask1=getNextLightest(A[0],A[1],A[2],B[2]),ask2=getNextLightest(B[0],B[1],B[2],A[2]); for (int i = 0; i <720; ++i) { int tab[3]; for (int z = 0; z < 3; ++z) for (int j = 0; j < 6; ++j) if(A[z]==vec[i][j]){tab[z]=j;break;} for (int z = 1; z < 3; ++z) if(tab[z]<tab[z-1]){valid[i]=0;break;} if(!valid[i])continue; for (int z = 0; z < 3; ++z) for (int j = 0; j < 6; ++j) if(B[z]==vec[i][j]){tab[z]=j;break;} for (int z = 1; z < 3; ++z) if(tab[z]<tab[z-1]){valid[i]=0;break;} if(!valid[i])continue; for (int z = 0; z < 3; ++z) for (int j = 0; j < 6; ++j) if(C[z]==vec[i][j]){tab[z]=j;break;} for (int z = 1; z < 3; ++z) if(tab[z]<tab[z-1]){valid[i]=0;break;} if(!valid[i])continue; for (int z = 0; z < 3; ++z) for (int j = 0; j < 6; ++j) if(D[z]==vec[i][j]){tab[z]=j;break;} for (int z = 1; z < 3; ++z) if(tab[z]<tab[z-1]){valid[i]=0;break;} if(!valid[i])continue; if(gnl(vec[i],A[0],A[1],A[2],B[2])!=ask1||gnl(vec[i],B[0],B[1],B[2],A[2])!=ask2)valid[i]=0; } for (int i = 0; i < 720; ++i) { if(!valid[i])continue; for (int j = 0;j < 6; j++) W[j]=vec[i][j]; break; } answer(W); }

Compilation message (stderr)

scales.cpp: In function 'void init(int)':
scales.cpp:7:15: warning: unused parameter 'T' [-Wunused-parameter]
 void init(int T) {
               ^
#Verdict Execution timeMemoryGrader output
Fetching results...