#include <bits/stdc++.h>
#include "scales.h"
using namespace std;
#define pb push_back
void init(int T) {
/* ... */
}
void orderCoins() {
/* ... */
int W[] = {1, 2, 3, 4, 5, 6};
int a[3];
a[0]=getLightest(1,2,3);
a[1]=getMedian(1,2,3);
if(a[0]+a[1]==3)a[2]=3;
if(a[0]+a[1]==4)a[2]=2;
if(a[0]+a[1]==5)a[2]=1;
// cout<<a[0]<<' '<<a[1]<<' '<<a[2]<<endl;
vector<int> vec[4];
for(int i=4;i<=6;i++){
int x=getNextLightest(a[0],a[1],a[2],i);
if(x==a[2])vec[2].pb(i);
else if(x==a[1])vec[1].pb(i);
else{
x=getLightest(a[0],a[1],i);
if(x==i)vec[0].pb(i);
else vec[3].pb(i);
}
}
W[vec[0].size()]=a[0];
W[vec[0].size()+vec[1].size()+1]=a[1];
W[vec[0].size()+vec[1].size()+1+vec[2].size()+1]=a[2];
// cout<<W[0]<<' '<<W[3]<<' '<<W[4]<<endl;
int last=0;
for(int i=0;i<4;i++){
if(vec[i].size()==1){
W[last]=vec[i][0];
last++;
}
else if(vec[i].size()==3){
a[0]=getLightest(vec[i][0],vec[i][1],vec[i][2]);
a[1]=getMedian(vec[i][0],vec[i][1],vec[i][2]);
for(int j=0;j<3;j++){
if(vec[i][j]!=a[0] && vec[i][j]!=a[1])a[2]=vec[i][j];
}
for(int j=0;j<3;j++){
W[last]=a[j];
last++;
}
break;
}
else if(vec[i].size()==2){
if(last<4){
a[0]=getLightest(vec[i][0],vec[i][1],W[last+2]);
a[1]=getMedian(vec[i][0],vec[i][1],W[last+2]);
}
else{
a[0]=getMedian(vec[i][0],vec[i][1],W[last-1]);
a[1]=getHeaviest(vec[i][0],vec[i][1],W[last-1]);
}
W[last]=a[0]; last++;
W[last]=a[1]; last++;
}
last++;
}
//for(int i=0;i<6;i++)cout<<W[i]<<' ';
//cout<<endl;
answer(W);
}
//3 4 6 2 1 5
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |