Submission #1156090

#TimeUsernameProblemLanguageResultExecution timeMemory
1156090aarb_.tomatexdScales (IOI15_scales)C++20
29.41 / 100
1 ms328 KiB
#include <bits/stdc++.h>
#include "scales.h"
using namespace std;
#define ll long long 

void init(int t) {}

void orderCoins() {
    vector<int> x(6, 0);
    
    int a = getLightest(1, 2, 3);
    int b = getLightest(4, 5, 6);
    
    int c = (a == 1) ? 3 : (a == 2) ? 1 : 2; // Asegurar que c es una moneda válida
    int d = getLightest(a, b, c);
    
    int a1 = getHeaviest(1, 2, 3);
    int b1 = getHeaviest(4, 5, 6);
    int c1 = (a1 == 1) ? 3 : (a1 == 2) ? 1 : 2;
    int d1 = getHeaviest(a1, b1, c1);
    
    if (d >= 1 && d <= 6) x[d - 1] = 1;
    if (d1 >= 1 && d1 <= 6) x[d1 - 1] = 2;
    
    vector<int> remaining;
    for (int i = 1; i <= 6; i++) {
        if (x[i - 1] == 0) remaining.push_back(i);
    }

    int W[6] = {d, -1, -1, -1, -1, d1};
    
    int q1 = getLightest(remaining[0], remaining[1], remaining[2]);
    int q2 = getLightest(remaining[1], remaining[2], remaining[3]);

    if (q1 == q2) {
        W[1] = q1;
        x[q1 - 1] = 3;
        
        remaining.clear();
        for (int i = 1; i <= 6; i++) {
            if (x[i - 1] == 0) remaining.push_back(i);
        }

        int f3 = getLightest(remaining[0], remaining[1], remaining[2]);
        int f5 = getHeaviest(remaining[0], remaining[1], remaining[2]);
        int f4 = getMedian(remaining[0], remaining[1], remaining[2]);

        W[2] = f3;
        W[3] = f4;
        W[4] = f5;
    } else {
        int q3 = getLightest(remaining[0], remaining[3], d1);
        W[1] = q3;
        x[q3 - 1] = 3;

        remaining.clear();
        for (int i = 1; i <= 6; i++) {
            if (x[i - 1] == 0) remaining.push_back(i);
        }

        int f3 = getLightest(remaining[0], remaining[1], remaining[2]);
        int f5 = getHeaviest(remaining[0], remaining[1], remaining[2]);
        int f4 = getMedian(remaining[0], remaining[1], remaining[2]);

        W[2] = f3;
        W[3] = f4;
        W[4] = f5;
    }

    answer(W);
}
#Verdict Execution timeMemoryGrader output
Fetching results...