Submission #1156098

#TimeUsernameProblemLanguageResultExecution timeMemory
1156098aarb_.tomatexdScales (IOI15_scales)C++20
0 / 100
0 ms320 KiB
#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); // La más ligera entre {1, 2, 3}
    int H = getHeaviest(4, 5, 6); // La más pesada entre {4, 5, 6}

    // 2. Determinar una moneda intermedia
    int M = getMedian(L, H, 3); // Encuentra una moneda intermedia

    // 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 timeMemoryGrader output
Fetching results...