#include "scales.h"
#include <bits/stdc++.h>
using namespace std;
#define pb push_back
#define rep(i,a,b) for(int i = a; i <= b; ++i)
void init(int T) {
//MEH
}
void orderCoins() {
int W[6];
set<int> l,r;
rep(i,1,3) l.insert(i);
rep(i,4,6) r.insert(i);
int mn = getLightest(1,2,3), mn2 = getLightest(4,5,6);
l.erase(mn);
r.erase(mn2);
vector<int> v;
int tmp = getMedian(mn,mn2,*l.begin());
if(tmp == mn) v.insert(v.end(), {mn2,mn,*l.begin()});
else if(tmp == mn2) v.insert(v.end(), {mn,mn2, *l.begin()});
else v.insert(v.end(), {mn,*l.begin(), mn2});
l.erase(l.begin());
vector<int> ind(7);
//{ind,}
rep(i,0,2) ind[v[i]] = i;
set<int> rst = {*l.begin(), *r.begin(), *r.rbegin()};
vector<int> gp;
vector<int> st;
int x = *l.begin() + *r.begin() + *r.rbegin();
gp.pb(getLightest(*l.begin(), *r.begin(), *r.rbegin()));
gp.pb(getMedian(*l.begin(), *r.begin(), *r.rbegin()));
gp.pb(x-gp[0]-gp[1]);
for(int &x : gp) {
st.pb((ind[getNextLightest(v[0],v[1],v[2], x)]+2)%3);
}
int L = 0, R = 0;
while (L+R < 6) {
if (L==3 || (R<3 && st[R] < L)) {
W[L+R] = gp[R];
R++;
}
else {
W[L+R] = v[L];
L++;
}
}
answer(W);
}
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |