#include "scales.h"
#include <bits/stdc++.h>
using namespace std;
void init(int T) {
/* ... */
}
void orderCoins() {
/* ... */
vector<int> curr;
for (int i = 1; i <= 6; i++) curr.push_back(i);
vector<int> ord;
while (curr.size() > 3) {
int mx = 0;
if (curr.size() == 6) {
int a = getHeaviest(curr[0], curr[1], curr[2]);
int b = getHeaviest(curr[3], curr[4], curr[5]);
for (int i = 1; i <= 6; i++) {
if (i == a || i == b) continue;
mx = getHeaviest(a, b, i);
break;
}
}
else {
int a = getHeaviest(curr[0], curr[1], curr[2]);
vector<int> qr = {a};
for (int i = curr.size()-1; i >= 0; i--) {
if (curr[i] != a) qr.push_back(curr[i]);
if (qr.size() == 3) break;
}
mx = getHeaviest(qr[0], qr[1], qr[2]);
}
ord.push_back(mx);
vector<int> nxt;
for (int i = 0; i < (int)curr.size(); i++) {
if (curr[i] != mx) nxt.push_back(curr[i]);
}
curr = nxt;
}
int med = getMedian(curr[0], curr[1], curr[2]);
int mx = getHeaviest(curr[0], curr[1], curr[2]);
int mn = med ^ mx ^ curr[0] ^ curr[1] ^ curr[2];
ord.push_back(mx);
ord.push_back(med);
ord.push_back(mn);
reverse(ord.begin(), ord.end());
int fin[6];
for (int i = 0; i < 6; i++) fin[i] = ord[i];
answer(fin);
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |