#include "scales.h"
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef long double ld;
#define sp <<" "<<
#define endl "\n"
void init(int T) {
// sus there might be some bruteforce precomp
}
void orderCoins() {
vector<int> L = {1, 2, 3}, R = {4, 5, 6};
auto sort3 = [&](vector<int> &X) -> void {
cerr << "query1" sp X[0] sp X[1] sp X[2] << endl;
int A = getLightest(X[0], X[1], X[2]);
int B = getMedian(X[0], X[1], X[2]);
int C;
for (int i = 0; i < 3; i++) {
if (X[i] == A or X[i] == B) continue;
C = X[i];
}
X = {A, B, C};
};
sort3(L), sort3(R);
vector<int> A;
int N, X;
N = L[1];
X = getMedian(L[0], N, R[0]);
if (X == L[0]) {
A.push_back(R[0]);
A.push_back(L[0]);
N = L[1];
} else if (X == N) {
A.push_back(L[0]);
A.push_back(L[1]);
N = R[0];
} else {
A.push_back(L[0]);
A.push_back(R[0]);
N = L[1];
}
if (N == R[0]) {
X = getNextLightest(R[0], R[1], R[2], L[2]);
if (X == R[0]) {
X = getHeaviest(R[1], R[2], L[2]);
if (X == L[2]) {
A.push_back(R[0]);
A.push_back(R[1]);
A.push_back(R[2]);
A.push_back(L[2]);
} else {
A.push_back(L[2]);
A.push_back(R[0]);
A.push_back(R[1]);
A.push_back(R[2]);
}
} else {
A.push_back(R[0]);
A.push_back(R[1]);
A.push_back(R[2]);
auto it = find(A.begin(), A.end(), X);
A.insert(it, L[2]);
}
} else if (N == L[1]) {
X = getMedian(R[1], N, R[2]);
if (X == R[1]) {
A.push_back(N);
A.push_back(R[1]);
N = R[2];
} else if (X == N) {
A.push_back(R[1]);
A.push_back(N);
N = R[2];
} else {
A.push_back(R[1]);
A.push_back(R[2]);
N = L[1];
}
if (N == L[1]) {
A.push_back(L[1]);
A.push_back(L[2]);
} else {
X = getNextLightest(L[1], R[1], R[2], L[2]);
if (X == L[1]) {
A.push_back(N);
A.push_back(L[2]);
} else {
A.push_back(N);
auto it = find(A.begin(), A.end(), X);
A.insert(it, L[2]);
}
}
} else assert(0);
int W[6];
for (int i = 0; i < 6; i++) W[i] = A[i];
answer(W);
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |