제출 #1357640

#제출 시각아이디문제언어결과실행 시간메모리
1357640cavanarScales (IOI15_scales)C++20
0 / 100
0 ms344 KiB
#include "scales.h"
#include "bits/stdc++.h"

using namespace std;

void init(int T) {
}

void orderCoins() {
    vector<int> coins = {1, 2, 3, 4, 5, 6};

    int light_1, mid_1, mid_2, heavy_1;

    int cand_1 = getMedian(coins[0], coins[1], coins[2]);
    coins.erase(find(begin(coins), end(coins), cand_1));

    light_1 = getLightest(coins[0], coins[1], coins[2]);
    coins.erase(find(begin(coins), end(coins), light_1));

    int cand_2 = getNextLightest(cand_1, light_1, coins[0], coins[1]);

    if (cand_2 == coins[0]) {
        heavy_1 = coins[0], mid_2 = coins[1], mid_1 = cand_1;
    } else if (cand_2 == light_1) {
        heavy_1 = coins[1], mid_2 = coins[0], mid_1 = cand_1;
    } else {
        heavy_1 = coins[0], mid_2 = cand_1, mid_1 = coins[1];
    }

    coins.erase(begin(coins), begin(coins) + 2);

    int cand_3 = getMedian(mid_1, mid_2, coins[0]);

    if (cand_3 == mid_1) {
        if (getMedian(light_1, coins[0], heavy_1) != light_1) {
            swap(light_1, coins[0]);
        }
        int cand_4 = getMedian(mid_1, mid_2, coins[1]);
        if (cand_4 == mid_1) {
            int cand_5 = getMedian(light_1, coins[0], coins[1]);
            if (cand_5 == light_1) {
                int w[] = {coins[0], light_1, coins[1], mid_1, mid_2, heavy_1};
                answer(w);
            } else if (cand_5 == coins[0]) {
                int w[] = {coins[1], coins[0], light_1, mid_1, mid_2, heavy_1};
                answer(w);
            } else {
                int w[] = {coins[0], coins[1], light_1, mid_1, mid_2, heavy_1};
                answer(w);
            }
        } else if (cand_4 == mid_2) {
            if (getMedian(light_1, coins[1], heavy_1) == heavy_1) {
                int w[] = {coins[0], light_1, mid_1, mid_2, heavy_1, coins[1]};
                answer(w);
            } else {
                int w[] = {coins[0], light_1, mid_1, mid_2, coins[1], heavy_1};
                answer(w);
            }
        } else {
            int w[] = {coins[0], light_1, mid_1, coins[1], mid_2, heavy_1};
            answer(w);
        }
    } else if (cand_3 == mid_2) {
        if (getMedian(light_1, coins[0], heavy_1) != heavy_1) {
            swap(heavy_1, coins[0]);
        }
        int cand_4 = getMedian(mid_1, mid_2, coins[1]);
        if (cand_4 == mid_2) {
            int cand_5 = getMedian(heavy_1, coins[0], coins[1]);
            if (cand_5 == heavy_1) {
                int w[] = {light_1, mid_1, mid_2, coins[1], heavy_1, coins[0]};
                answer(w);
            } else if (cand_5 == coins[0]) {
                int w[] = {light_1, mid_1, mid_2, heavy_1, coins[0], coins[1]};
                answer(w);
            } else {
                int w[] = {light_1, mid_1, mid_2, heavy_1, coins[1], coins[0]};
                answer(w);
            }
        } else if (cand_4 == mid_1) {
            if (getMedian(light_1, coins[1], heavy_1) == light_1) {
                int w[] = {coins[1], light_1, mid_1, mid_2, heavy_1, coins[0]};
                answer(w);
            } else {
                int w[] = {light_1, coins[1], mid_1, mid_2, heavy_1, coins[0]};
                answer(w);
            }
        } else {
            int w[] = {light_1, mid_1, coins[1], mid_2, heavy_1, coins[0]};
            answer(w);
        }
    } else {
        int cand_4 = getMedian(mid_1, mid_2, coins[1]);
        if (cand_4 == coins[1]) {
            if (getMedian(mid_1, coins[0], coins[1]) == coins[0]) {
                int w[] = {light_1, mid_1, coins[0], coins[1], mid_2, heavy_1};
                answer(w);
            } else {
                int w[] = {light_1, mid_1, coins[1], coins[0], mid_2, heavy_1};
                answer(w);
            }
        } else if (cand_4 == mid_1) {
            if (getMedian(light_1, coins[1], heavy_1) == light_1) {
                int w[] = {coins[1], light_1, mid_1, coins[0], mid_2, heavy_1};
                answer(w);
            } else {
                int w[] = {light_1, coins[1], mid_1, coins[0], mid_2, heavy_1};
                answer(w);
            }
        } else {
            if (getMedian(light_1, coins[1], heavy_1) == heavy_1) {
                int w[] = {light_1, mid_1, coins[0], mid_2, heavy_1, coins[1]};
                answer(w);
            } else {
                int w[] = {light_1, mid_1, coins[0], mid_2, coins[1], heavy_1};
                answer(w);
            }
        }
    }
}
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…