#include <bits/stdc++.h>
#include "scales.h"
using namespace std;
using ll = long long;
using pii = pair<int, int>;
void init(int t) {
return;
}
void complete(vector<int> &p) {
set<int> full;
for (int i=1; i<=6; i++) {
full.insert(i);
}
for (int i=0; i<3; i++) {
full.erase(p[i]);
}
int a, b, c;
a=b=c=-1;
for (auto x : full) {
if (a==-1) {
a=x;
}
else if (b==-1) {
b=x;
}
else {
c=x;
}
}
int mx = getHeaviest(a, b, c);
int md = getLightest(a, b, c);
full.erase(mx);
full.erase(md);
p[3] = *full.begin();
p[4] = md;
p[5] = mx;
}
void orderCoins() {
vector<int> p(6);
set<int> full;
set<int> l, r;
for (int i=1; i<=6; i++) {
full.insert(i);
if (i <= 3) {
l.insert(i);
}
else {
r.insert(i);
}
}
int lmn = getLightest(1, 2, 3);
int rmn = getLightest(4, 5, 6);
int mdl = getMedian(1, 2, 3);
l.erase(lmn);
l.erase(mdl);
r.erase(rmn);
int md = getMedian(lmn, rmn, mdl);
if (md == mdl) {
p[0] = lmn;
p[1] = mdl;
p[2] = rmn;
complete(p);
int a[6];
for (int i=0; i<6; i++) {
a[i] = p[i];
}
answer(a);
return;
}
else if (md==lmn) {
p[0] = rmn;
p[1] = lmn;
full.erase(rmn);
full.erase(lmn);
full.erase(mdl);
}
else {
//lmn < rmn <
p[0] = lmn;
p[1] = rmn;
full.erase(rmn);
full.erase(lmn);
full.erase(mdl);
}
int mdr = getMedian(4, 5, 6);
r.erase(mdr);
full.erase(mdr);
int mdd = getMedian(mdl, mdr, *r.begin());
if (mdd == mdl) {
p[2] = mdr;
p[3] = mdl;
int mnn = getMedian(mdl, *r.begin(), *l.begin());
p[4] = mnn;
full.erase(mnn);
p[5] = *full.begin();
}
else if (mdd == *r.begin()) {
p[2] = mdr;
p[3] = mdd;
p[4] = mdl;
p[5] = *l.begin();
}
else {
int mnn = getMedian(*l.begin(), *r.begin(), mdr);
p[2] = mdl;
if (mnn == *l.begin()) {
p[3] = mdr;
p[4] = mnn;
p[5] = *r.begin();
}
else if (mnn == mdr) {
p[3] = *l.begin();
p[4] = mnn;
p[5] = *r.begin();
}
else {
p[3] = mdr;
p[4] = mnn;
p[5] = *l.begin();
}
}
int a[6];
for (int i=0; i<6; i++) {
a[i] = p[i];
}
answer(a);
}
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |