#include <bits/stdc++.h>
#include "scales.h"
using namespace std;
void init(int t) {}
void orderCoins() {
vector<int> W(6); // Arreglo donde almacenaremos el orden final
// 1. Encontrar la moneda más ligera y la más pesada en solo dos llamadas
int L = getLightest(1, 2, 3); // Encuentra la más ligera entre {1, 2, 3}
int H = getHeaviest(4, 5, 6); // Encuentra la más pesada entre {4, 5, 6}
// 2. Determinar una moneda intermedia sin errores
int possible_medians[] = {1, 2, 3, 4, 5, 6};
int M = -1;
for (int x : possible_medians) {
if (x != L && x != H) {
M = x;
break; // Tomamos el primer número que no sea ni L ni H
}
}
// 3. Identificar las tres monedas restantes
vector<int> remaining;
for (int i = 1; i <= 6; i++) {
if (i != L && i != H && i != M) remaining.push_back(i);
}
// 4. Encontrar las monedas en orden usando `getNextLightest`
int L2 = getNextLightest(remaining[0], remaining[1], remaining[2], L);
int L3 = getNextLightest(remaining[0], remaining[1], remaining[2], L2);
int H2 = getNextLightest(remaining[0], remaining[1], remaining[2], L3); // La última será la más pesada de este grupo
// 5. Asignar los valores encontrados al array final
W[0] = L;
W[1] = L2;
W[2] = L3;
W[3] = M;
W[4] = H2;
W[5] = H;
// 6. Llamamos a answer con el orden final (pasando el puntero al primer elemento del vector)
answer(W.data());
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |