Submission #1207551

#TimeUsernameProblemLanguageResultExecution timeMemory
1207551kilikumaScales (IOI15_scales)C++20
0 / 100
0 ms320 KiB
#include "scales.h"
#include <bits/stdc++.h>

using namespace std;

void init(int T) {
}

void orderCoins() {
    int W[6];
    
    int heaviest123 = getHeaviest(1, 2, 3);
    int lightest123 = getLightest(1, 2, 3);
    int median123;
    if (heaviest123 != 1 && lightest123 != 1) median123 = 1;
    else if (heaviest123 != 2 && lightest123 != 2) median123 = 2;
    else median123 = 3;
    
    int heaviest456 = getHeaviest(4, 5, 6);
    int lightest456 = getLightest(4, 5, 6);
    int median456;
    if (heaviest456 != 4 && lightest456 != 4) median456 = 4;
    else if (heaviest456 != 5 && lightest456 != 5) median456 = 5;
    else median456 = 6;
    
    int candidate1 = heaviest123;
    int candidate2 = heaviest456;
    int heaviest;
    if (candidate1 == heaviest123) {
        int temp = getHeaviest(heaviest123, median456, lightest456);
        if (temp == heaviest123) {
            heaviest = heaviest123;
        } else {
            heaviest = heaviest456;
        }
    } else {
        int temp = getHeaviest(heaviest456, median123, lightest123);
        if (temp == heaviest456) {
            heaviest = heaviest456;
        } else {
            heaviest = heaviest123;
        }
    }
    
    int lightest;
    int temp_light = getLightest(lightest123, lightest456, median123);
    if (temp_light == lightest123 || temp_light == lightest456) {
        lightest = temp_light;
    } else {
        temp_light = getLightest(lightest123, lightest456, median456);
        lightest = temp_light;
    }

    vector<int> remaining;
    for (int i = 1; i <= 6; ++i) {
        if (i != lightest && i != heaviest) {
            remaining.push_back(i);
        }
    }

    int a = remaining[0];
    int b = remaining[1];
    int c = remaining[2];
    int d = remaining[3];
    
    int h1 = getHeaviest(a, b, c);
    int h2 = getHeaviest(a, b, d);
    int second_heaviest;
    if (h1 == h2) {
        if (h1 == a) {
            second_heaviest = a;
        } else if (h1 == b) {
            second_heaviest = b;
        } else {
            int temp_h = getHeaviest(c, d, a);
            second_heaviest = temp_h;
        }
    } else {
        if (h1 == a && h2 == a) {
            second_heaviest = a;
        } else if (h1 == b && h2 == b) {
            second_heaviest = b;
        } else {
            if (h1 == c) {
                second_heaviest = getHeaviest(c, d, a);
            } else {
                second_heaviest = getHeaviest(c, d, b);
            }
        }
    }
    
    
    W[0] = lightest;
    W[5] = heaviest;
    
    W[1] = remaining[0];
    W[2] = remaining[1];
    W[3] = remaining[2];
    W[4] = remaining[3];
    
    
    
    answer(W);
}
#Verdict Execution timeMemoryGrader output
Fetching results...