Submission #1131491

#TimeUsernameProblemLanguageResultExecution timeMemory
1131491AriadnaScales (IOI15_scales)C++20
0 / 100
0 ms320 KiB
#include <bits/stdc++.h>
#include "scales.h"
using namespace std;

void orderCoins() {
    int W[6];
    vector<int> first(3);
    vector<int> m(4);
    m[0] = getMedian(1, 2, 3);
    m[1] = getMedian(4, 5, 6);
    vector<int> aux;
    for (int i = 1; i <= 6; ++i) {
        if (i == m[0] || i == m[1]) continue;
        aux.push_back(i);
    }
    m[2] = getMedian(aux[0], aux[1], aux[2]);
    aux = {};
    for (int i = 1; i <= 6; ++i) {
        if (i == m[0] || i == m[1] || i == m[2]) continue;
        aux.push_back(i);
    }
    m[3] = getMedian(aux[0], aux[1], aux[2]);
    vector<int> extrem;
    for (int i = 0; i < 3; ++i) {
        if (aux[i] == m[3]) continue;
        extrem.push_back(aux[i]);
    }
    int h = getHeaviest(m[0], extrem[0], extrem[1]);
    int l = extrem[0]+extrem[1]-h;

    vector<int> g(4);
    g[0] = getLightest(h, m[0], m[1]), g[1] = m[0]+m[1]-g[0];
    int a = getMedian(g[0], g[1], m[2]);
    if (a == g[0]) {
        g[2] = g[1];
        g[1] = g[0];
        g[0] = m[2];
    } else if (a == g[1]) {
        g[2] = m[2];
    } else {
        g[2] = g[1];
        g[1] = m[2];
    }

    a = getMedian(g[2], g[1], m[3]);
    if (a == g[2]) {
        g[3] = m[3];
    } else if (a == m[3]) {
        g[3] = g[2];
        g[2] = m[3];
    } else {
        g[3] = g[2];
        g[2] = g[1];
        g[1] = getMedian(h, m[3], g[0]);
        g[0] = g[0]+m[3]-g[1];
    }

    W[0] = l; W[5] = h;
    for (int i = 1; i <= 4; ++i) W[i] = g[i-1];
    answer(W);
}

void init(int T) {
    for (int i = 0; i < T; ++i) orderCoins();
}
#Verdict Execution timeMemoryGrader output
Fetching results...