#include <bits/stdc++.h>
#include "scales.h"
using namespace std;
void init(int t) {
// No se requiere inicialización especial.
}
void orderCoins() {
// Ordenamos el Grupo 1 (monedas 1, 2, 3)
int L1 = getLightest(1, 2, 3);
int M1 = getMedian(1, 2, 3);
int H1 = getHeaviest(1, 2, 3);
// Ordenamos el Grupo 2 (monedas 4, 5, 6)
int L2 = getLightest(4, 5, 6);
int M2 = getMedian(4, 5, 6);
int H2 = getHeaviest(4, 5, 6);
// Cada grupo ya está ordenado (de menor a mayor)
vector<int> group1 = {L1, M1, H1};
vector<int> group2 = {L2, M2, H2};
// Determinamos la moneda más pesada de todas (overallHeaviest)
int overallHeaviest = getHeaviest(H1, H2, L1);
// Función de comparación entre dos monedas.
auto cmp = [&](int a, int b) -> bool {
if (a == overallHeaviest) return false;
if (b == overallHeaviest) return true;
int res = getLightest(a, b, overallHeaviest);
return (res == a);
};
// Fusionamos las dos listas ordenadas (merge)
vector<int> merged;
int i = 0, j = 0;
while(i < group1.size() && j < group2.size()){
if(cmp(group1[i], group2[j])){
merged.push_back(group1[i]);
i++;
} else {
merged.push_back(group2[j]);
j++;
}
}
while(i < group1.size()){
merged.push_back(group1[i]);
i++;
}
while(j < group2.size()){
merged.push_back(group2[j]);
j++;
}
// Se reporta la lista final usando merged.data() para pasar un int*.
answer(merged.data());
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |