#include <bits/stdc++.h>
#include "scales.h"
using namespace std;
void init(int t) {}
void orderCoins() {
vector<int> W(6, -1); // Inicializamos con -1 para evitar valores incorrectos
// 1. Encontrar la moneda más ligera y la más pesada de {1,2,3} y {4,5,6}
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 correcta
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 la primera moneda válida como mediana
}
}
// Validación para evitar errores
if (M == -1) {
cerr << "Error: No se encontró una mediana válida." << endl;
return;
}
// 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
answer(W.data());
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |