#include "scales.h"
#include <bits/stdc++.h>
// meeeow mrrow :3c
// steam on free !vivid/stasis play
#define fo(i, a, b) for (auto i = (a); i < (b); i++)
#define of(i, a, b) for (auto i = (b); i-- > (a);)
#define pb push_back
#define pob pop_back
using namespace std;
void ans(vector<int> &w) {
    for (int &v : w) v++;
    answer(w.data());
}
int gl(int a, int b, int c) {
    return getLightest(a + 1, b + 1, c + 1) - 1;
}
int gh(int a, int b, int c) {
    return getHeaviest(a + 1, b + 1, c + 1) - 1;
}
int gm(int a, int b, int c) {
    return getMedian(a + 1, b + 1, c + 1) - 1;
}
int nl(int a, int b, int c, int d) {
    return getNextLightest(a + 1, b + 1, c + 1, d + 1) - 1;
}
int gi(int v, vector<int> &w) {
    fo(i, 0, w.size()) if (w[i] == v) return i;
    return -1;
}
void init(int T) {}
void orderCoins() {
    vector<int> w = {0, 1, 2};
    vector<vector<int>> w2(4);
    swap(w[0], w[gi(gl(0, 1, 2), w)]);
    swap(w[2], w[gi(gh(0, 1, 2), w)]);
    fo(i, 3, 6) {
        w2[gi(nl(w[0], w[1], w[2], i), w)].pb(i);
    }
    if (w2[0].size() == 1) {
        if (gl(w2[0][0], w[0], w[1]) != w2[0][0]) swap(w2[0], w2[3]);
    } else if (w2[0].size() == 2) {
        int i = gi(gl(w2[0][0], w2[0][1], 0), w2[0]);
        if (i == -1) {
            swap(w2[0], w2[3]);
            swap(w2[3][1], w2[3][gi(gh(w2[3][0], w2[3][1], w[0]), w2[3])]);
        } else {
            swap(w2[0][0], w2[0][i]);
            if (gh(w2[0][0], w2[0][1], 0) != 0) {
                w2[3].pb(w2[0][1]);
                w2[0].pob();
            }
        }
    } else if (w2[0].size() == 3) {
        swap(w2[0][0], w2[0][gi(gl(3, 4, 5), w2[0])]);
        swap(w2[0][2], w2[0][gi(gh(3, 4, 5), w2[0])]);
        int m = gm(w2[0][0], w2[0][2], 0);
        if (m == w2[0][0]) {
            swap(w2[0], w2[3]);
        } else if (m == 0) {
            w2[3].pb(w2[0][2]);
            w2[0].pob();
            if (gm(w2[0][0], w2[0][1], 0) == 0) {
                w2[3].pb(w2[0][1]);
                w2[0].pob();
                swap(w2[3][0], w2[3][1]);
            }
        }
    }
    fo(i, 1, 3) {
        if (w2[i].size() == 2) {
            swap(w2[i][0], w2[i][gi(gl(w2[i][0], w2[i][1], w[i]), w2[i])]);
        } else if (w2[i].size() == 3) {
            swap(w2[i][0], w2[i][gi(gl(3, 4, 5), w2[i])]);
            swap(w2[i][2], w2[i][gi(gh(3, 4, 5), w2[i])]);
        }
    }
    vector<int> res;
    fo(i, 0, 4) {
        for (int j : w2[i]) res.pb(j);
        if (i < 3) res.pb(w[i]);
    }
    ans(res);
}
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... |