제출 #1294087

#제출 시각아이디문제언어결과실행 시간메모리
1294087goulthenScales (IOI15_scales)C++20
0 / 100
0 ms332 KiB
#include "scales.h"
#include <bits/stdc++.h>
using namespace std;

#define pb push_back

void init(int T) {
    //MEH
}

void orderCoins() {
    int W[6];
    set<int> l,r;
    l.insert(1);
    l.insert(2);
    l.insert(3);
    r.insert(4);
    r.insert(5);
    r.insert(6);

    int mn1 = getLightest(1,2,3), mn2 = getLightest(4,5,6);
    l.erase(mn1);
    r.erase(mn2);
    int mn3 = getLightest(mn2,*l.begin(),*l.rbegin());

    if(mn3!=mn2) {
        W[0] = mn1;
        W[1] = mn3;
        l.erase(mn3);
        mn3 = getLightest(mn2,*l.begin(),*r.begin());
        if(mn3==mn2) {
            W[2] = mn2;
            int s = *l.begin() + *r.begin() + *r.rbegin();
            mn1 = getLightest(*l.begin(), *r.begin(),*r.rbegin());
            W[3] = mn1;
            s-=mn1;
            mn1 = getHeaviest(*l.begin(),*r.begin(),*r.rbegin());
            s-=mn1;
            W[5]=mn1;
            W[4]=s;
        } else {
            W[2] = *l.begin();
            W[3] = mn2;
            int x = getHeaviest(4,5,6);
            W[5] = x;
            W[4] = 15-x-mn2;
        }
    } else {
        //l.begin, l.rbegin, r.begin, r.rbegin
        mn3 = getLightest(mn1,mn2,*l.begin());
        W[0] = mn3;
        W[1] = mn1+mn2-mn3;

        int x = *l.begin(), y = *l.rbegin(), z = *r.begin(), lft = *r.rbegin();
        int s = x+y+z;
        deque<int> ord;
        int mn = getLightest(x,y,z), mx = getHeaviest(x,y,z);
        ord.pb(mn);
        ord.pb(s-mn-mx);
        ord.pb(mx);

        int tmp = getNextLightest(W[0],mn,mx,lft);
        if(tmp == mn) {
            W[2] = lft;
            W[3] = mn;
            W[4] = s-mn-mx;
            W[5] = mx;
        } else if (tmp == W[0]) {
            W[2] = mn;
            W[3] = s-mn-mx;
            W[4] = mx;
            W[5] = lft;
        } else {
            W[2] = mn;
            W[5] = mx;
            int tmp2 = getHeaviest(W[0],s-mn-mx,lft);
            W[3] = lft+s-mn-mx-tmp2;
            W[4] = tmp2;
        }
    }

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