Submission #1167986

#TimeUsernameProblemLanguageResultExecution timeMemory
1167986HappyCapybara저울 (IOI15_scales)C++17
71.43 / 100
0 ms328 KiB
#include "scales.h"
#include<bits/stdc++.h>
using namespace std;

void init(int T){
    
}

void orderCoins(){
    int ans[6];
    int a1 = getHeaviest(1, 2, 3);
    int a2 = 1;
    if (a1 == 1) a2 = 2;
    int a3 = 2;
    if (a1 == 2 || a2 == 2) a3 = 3;
    int b3 = getLightest(4, 5, 6);
    int b1 = 4;
    if (b3 == 4) b1 = 5;
    int b2 = 5;
    if (b3 == 5 || b1 == 5) b2 = 6;
    int r1 = getHeaviest(a2, a3, b3);
    if (r1 == b3){
        if (getLightest(a1, a2, a3) != a3) swap(a2, a3);
        ans[0] = a3;
        ans[1] = a2;
        if (getHeaviest(b1, b2, b3) != b1) swap(b1, b2);
        int r2 = getMedian(a1, b3, b2);
        if (r2 == a1){
            ans[2] = b3;
            ans[3] = a1;
            ans[4] = b2;
            ans[5] = b1;
            answer(ans);
            return;
        }
        if (r2 == b3){
            ans[2] = a1;
            ans[3] = b3;
            ans[4] = b2;
            ans[5] = b1;
            answer(ans);
            return;
        }
        if (r2 == b2){
            ans[2] = b3;
            ans[3] = b2;
            if (getMedian(a1, b1, b2) == a1){
                ans[4] = a1;
                ans[5] = b1;
            }
            else {
                ans[4] = b1;
                ans[5] = a1;
            }
            answer(ans);
            return;
        }
    }
    if (r1 == a3) swap(a2, a3);
    if (r1 == a2){
        if (getHeaviest(b1, b2, b3) != b1) swap(b1, b2);
        int r2 = getMedian(b2, b3, a3);
        if (r2 == b2){
            ans[0] = b3;
            ans[1] = b2;
            int r3 = getMedian(a2, a3, b1);
            if (r3 == a3){
                ans[2] = b1;
                ans[3] = a3;
                ans[4] = a2;
                ans[5] = a1;
                answer(ans);
                return;
            }
            if (r3 == b1){
                ans[2] = a3;
                ans[3] = b1;
                ans[4] = a2;
                ans[5] = a1;
                answer(ans);
                return;
            }
            if (r3 == a2){
                ans[2] = a3;
                ans[3] = a2;
                if (getHeaviest(a2, a1, b1) == a1){
                    ans[4] = b1;
                    ans[5] = a1;
                }
                else {
                    ans[4] = a1;
                    ans[5] = b1;
                }
                answer(ans);
                return;
            }
        }
        if (r2 == b3){
            ans[0] = a3;
            ans[1] = b3;
            int r3 = getMedian(b2, a1, a2);
            if (r3 == b2){
                ans[2] = a2;
                ans[3] = b2;
                if (getHeaviest(b2, b1, a1) == a1){
                    ans[4] = b1;
                    ans[5] = a1;
                }
                else {
                    ans[4] = a1;
                    ans[5] = b1;
                }
                answer(ans);
                return;
            }
            if (r3 == a1){
                ans[2] = a2;
                ans[3] = a1;
                ans[4] = b2;
                ans[5] = b1;
                answer(ans);
                return;
            }
            if (r3 == a2){
                ans[2] = b2;
                int r4 = getMedian(a1, a2, b1);
                if (r4 == a1){
                    ans[3] = a2;
                    ans[4] = a1;
                    ans[5] = b1;
                    answer(ans);
                    return;
                }
                if (r4 == a2){
                    ans[3] = b1;
                    ans[4] = a2;
                    ans[5] = a1;
                    answer(ans);
                    return;
                }
                if (r4 == b1){
                    ans[3] = a2;
                    ans[4] = b1;
                    ans[5] = a1;
                    answer(ans);
                    return;
                }
            }
        }
        if (r2 == a3){
            ans[0] = b3;
            ans[1] = a3;
            int r3 = getMedian(a1, a2, b2);
            if (r3 == a1){
                ans[2] = a2;
                ans[3] = a1;
                ans[4] = b2;
                ans[5] = b1;
                answer(ans);
                return;
            }
            if (r3 == a2){
                ans[2] = b2;
                int r4 = getMedian(a1, a2, b1);
                if (r4 == a1){
                    ans[3] = a2;
                    ans[4] = a1;
                    ans[5] = b1;
                    answer(ans);
                    return;
                }
                if (r4 == a2){
                    ans[3] = b1;
                    ans[4] = a2;
                    ans[5] = a1;
                    answer(ans);
                    return;
                }
                if (r4 == b1){
                    ans[3] = a2;
                    ans[4] = b1;
                    ans[5] = a1;
                    answer(ans);
                    return;
                }
            }
            if (r3 == b2){
                ans[2] = a2;
                ans[3] = b2;
                if (getHeaviest(b1, b2, a1) == a1){
                    ans[4] = b1;
                    ans[5] = a1;
                }
                else {
                    ans[4] = a1;
                    ans[5] = b1;
                }
                answer(ans);
                return;
            }
        }
    }
}
#Verdict Execution timeMemoryGrader output
Fetching results...