#include <bits/stdc++.h>
#include "scales.h"
#define ll long long
#define sz(x) int(x.size())
#define forn(i,n) for(i=0; i<n; i++)
#define all(x) x.begin(),x.end()
#define pb push_back
#define mp make_pair
#define fr first
#define se second
using namespace std;
/*
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 answer(int C[]);*/
void init(int T){
}
void ord(vector<ll>&v)
{
vector<ll>ans;
ans.pb(getLightest(v[0],v[1],v[2]));
ans.pb(getMedian(v[0],v[1],v[2]));
for(ll i=0; i<sz(v); i++)
if(v[i]!=ans[0]&&v[i]!=ans[1])
ans.pb(v[i]);
v=ans;
}
void ret(vector<ll>&v,vector<ll>&q)
{
ll i;
int c[6];
for(i=0; i<3; i++)
c[i]=v[i];
for(i=0; i<3; i++)
c[i+3]=q[i];
answer(c);
}
void orderCoins()
{
vector<ll>v, q;
q={1,2,3};
ll i, x, sig=4, j, y, z, k;
for(i=0; i<3; i++)
{
x=getLightest(q[0],q[1],q[2]);
v.pb(x);
for(j=0; j<sz(q); j++)
if(q[j]==x)
q[j]=sig++;
}
x=getLightest(q[0],q[1],q[2]);
y=getHeaviest(v[0],v[1],v[2]);
for(i=0; i<sz(q); i++)
if(x!=q[i])
z=q[i];
k=getLightest(x,y,z);
if(k!=y)
{
j=0;
for(i=0; i<sz(v); i++)
if(v[i]==y)
j=i;
for(i=0; i<sz(q); i++)
if(q[i]==x)
{
swap(q[i],v[j]);
break;
}
ord(v);
vector<ll>q2;
q2.pb(q[i]);
q2.pb(getMedian(q[0],q[1],q[2]));
for(k=0; k<sz(q); k++)
if(q[k]!=q2[0]&&q[k]!=q2[1])
q2.pb(q[k]);
ret(v,q2);
return;
}
ord(v);
ord(q);
ret(v,q);
return;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |