#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> a, b;
int tot = 0;
int med = getMedian(curr[0], curr[1], curr[2]);
int mx = getHeaviest(curr[0], curr[1], curr[2]);
tot += 2;
int mn = med ^ mx ^ curr[0] ^ curr[1] ^ curr[2];
a.push_back(mn);
a.push_back(med);
a.push_back(mx);
med = getMedian(curr[3], curr[4], curr[5]);
mx = getHeaviest(curr[3], curr[4], curr[5]);
tot += 2;
mn = med ^ mx ^ curr[3] ^ curr[4] ^ curr[5];
b.push_back(mn);
b.push_back(med);
b.push_back(mx);
vector<int> ord;
int pa = 0, pb = 0;
while (pa < 3 && pb < 3) {
vector<int> qr;
qr.push_back(a[pa]);
qr.push_back(b[pb]);
mn = 1;
if (pa < 2) qr.push_back(a[pa+1]);
else if (pb < 2) qr.push_back(b[pb+1]);
else {
mn = 0;
qr.push_back(a[pa-1]);
}
if (mn) {
int nxt = getLightest(qr[0], qr[1], qr[2]);
tot++;
ord.push_back(nxt);
if (a[pa] == nxt) pa++;
else pb++;
}
else {
int nxt = a[pa] ^ b[pb] ^ getHeaviest(qr[0], qr[1], qr[2]);
ord.push_back(nxt);
if (a[pa] == nxt) pa++;
else pb++;
}
}
while (pa < 3) {
ord.push_back(a[pa++]);
}
while (pb < 3) {
ord.push_back(b[pb++]);
}
int fin[6];
for (int i = 0; i < 6; i++) fin[i] = ord[i];
cout << tot << "\n";
answer(fin);
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |