#include "scales.h"
#include <bits/stdc++.h>
using namespace std;
#define pb push_back
void init(int T) {
//MEH
}
void orderCoins() {
int W[6];
set<int> l,r;
l.insert(1);
l.insert(2);
l.insert(3);
r.insert(4);
r.insert(5);
r.insert(6);
int mn1 = getLightest(1,2,3), mn2 = getLightest(4,5,6);
l.erase(mn1);
r.erase(mn2);
int mn3 = getLightest(mn2,*l.begin(),*l.rbegin());
if(mn3!=mn2) {
W[0] = mn1;
W[1] = mn3;
l.erase(mn3);
mn3 = getLightest(mn2,*l.begin(),*r.begin());
if(mn3==mn2) {
W[2] = mn2;
int s = *l.begin() + *r.begin() + *r.rbegin();
mn1 = getLightest(*l.begin(), *r.begin(),*r.rbegin());
W[3] = mn1;
s-=mn1;
mn1 = getHeaviest(*l.begin(),*r.begin(),*r.rbegin());
s-=mn1;
W[5]=mn1;
W[4]=s;
} else {
W[2] = *l.begin();
W[3] = mn2;
int x = getHeaviest(4,5,6);
W[5] = x;
W[4] = 15-x-mn2;
}
} else {
//l.begin, l.rbegin, r.begin, r.rbegin
mn3 = getLightest(mn1,mn2,*l.begin());
W[0] = mn3;
W[1] = mn1+mn2-mn3;
int x = *l.begin(), y = *l.rbegin(), z = *r.begin(), lft = *r.rbegin();
int s = x+y+z;
deque<int> ord;
int mn = getLightest(x,y,z), mx = getHeaviest(x,y,z);
ord.pb(mn);
ord.pb(s-mn-mx);
ord.pb(mx);
int tmp = getNextLightest(W[0],mn,mx,lft);
if(tmp == mn) {
W[2] = lft;
W[3] = mn;
W[4] = s-mn-mx;
W[5] = mx;
} else if (tmp == W[0]) {
W[2] = mn;
W[3] = s-mn-mx;
W[4] = mx;
W[5] = lft;
} else {
W[2] = mn;
W[5] = mx;
int tmp2 = getHeaviest(W[0],s-mn-mx,lft);
W[3] = lft+s-mn-mx-tmp2;
W[4] = tmp2;
}
}
answer(W);
}
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |