Submission #1260933

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

#define ll long long
#define fi first
#define se second
#define pb push_back
#define vi vector<int>
#define vl vector<ll>
#define pi pair<int, int>
#define pl pair<ll,ll>
#define all(x) (x).begin(),(x).end()

void init(int t) {}

void orderCoins() {
    int mn1=getLightest(1,2,3);
    int mn2=getLightest(4,5,6);
    int ans[6];
    ans[0]=getLightest(mn1,mn2,1+(mn1==1)+(mn2==1)+(mn1==2)+(mn2==2));
    if (ans[0]==mn1) {
        ans[1]=getLightest(mn2,(mn1==1?2:1),(mn1==3?2:3));
    }
    else {
        ans[1]=getLightest(mn1,(mn2==4?5:4),(mn2==6?5:6));
    }
    if ((mn1==ans[0] && mn2==ans[1]) || (mn2==ans[0] && mn1==ans[1])) {
        vi rem={1,2,3,4,5,6};
        rem.erase(find(all(rem),ans[0]));
        rem.erase(find(all(rem),ans[1]));
        int mn3=getLightest(rem[0],rem[1],rem[2]);
        ans[2]=getMedian(mn1,mn3,rem[3]);
        if (ans[2]==rem[3]) {
            ans[3]=mn3;
            ans[4]=getMedian(rem[0],rem[1],rem[2]);
            ans[5]=21-accumulate(ans,ans+6,0);
            answer(ans);
            return;
        }
    }
    else if (mn1==ans[0]) {
        ans[2]=getMedian(mn1,mn2,6-ans[0]-ans[1]);
    }
    else {
        ans[2]=getMedian(mn1,mn2,15-ans[0]-ans[1]);
    }
    vi rem={1,2,3,4,5,6};
    rem.erase(find(all(rem),ans[0]));
    rem.erase(find(all(rem),ans[1]));
    rem.erase(find(all(rem),ans[2]));
    ans[3]=getLightest(rem[0],rem[1],rem[2]);
    ans[4]=getMedian(rem[0],rem[1],rem[2]);
    ans[5]=21-accumulate(ans,ans+6,0);
    answer(ans);
}
#Verdict Execution timeMemoryGrader output
Fetching results...