Submission #1215745

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

array<int, 5> vec[727]={{1,1,2,3},{3,4,5,6},{4,2,3,4,5},{2,2,5,6},{3,1,4,5},{3,3,4,6},{-1},{3,1,3,6},{-1},{3,3,4,6},{-1},{-1},{3,2,3,4},{3,1,4,6},{-1},{3,1,4,6},{-1},{3,1,3,6},{-1},{-1},{1,2,3,4},{3,3,4,6},{-1},{3,1,2,5},{-1},{3,1,4,5},{-1},{-1},{-1},{2,3,5,6},{3,1,4,5},{3,2,4,6},{-1},{3,1,2,6},{-1},{3,2,4,6},{-1},{-1},{3,2,3,4},{3,1,4,6},{-1},{3,1,4,6},{-1},{3,1,2,6},{-1},{-1},{1,2,3,4},{3,1,2,5},{-1},{3,2,4,6},{-1},{3,1,4,5},{-1},{-1},{-1},{4,1,2,3,5},{2,2,3,4},{3,1,4,6},{-1},{3,1,4,6},{-1},{1,2,3,4},{-1},{-1},{3,1,2,6},{1,2,3,4},{-1},{1,2,3,5},{-1},{3,2,3,6},{-1},{-1},{3,1,2,6},{1,2,3,4},{-1},{1,3,5,6},{-1},{3,2,3,6},{-1},{-1},{-1},{-1},{4,2,3,4,6},{1,2,5,6},{2,2,3,4},{3,1,3,4},{-1},{3,1,2,4},{-1},{3,2,3,5},{-1},{-1},{3,2,3,5},{3,1,4,5},{-1},{3,1,4,5},{-1},{3,1,3,4},{-1},{-1},{3,1,5,6},{3,3,4,5},{-1},{3,1,3,4},{-1},{3,3,4,5},{-1},{-1},{-1},{1,3,5,6},{2,2,3,4},{3,1,3,4},{-1},{3,1,2,4},{-1},{3,2,3,5},{-1},{-1},{3,2,3,5},{3,1,4,5},{-1},{3,1,4,5},{-1},{3,1,2,4},{-1},{-1},{3,1,5,6},{3,2,4,5},{-1},{3,1,2,4},{-1},{3,2,4,5},{-1},{-1},{-1},{1,2,3,4},{3,1,5,6},{3,2,3,5},{-1},{1,3,4,5},{-1},{3,2,3,5},{-1},{-1},{3,1,5,6},{3,2,3,5},{-1},{1,2,4,5},{-1},{3,2,3,5},{-1},{-1},{4,1,2,3,4},{2,1,2,3},{-1},{3,1,5,6},{-1},{3,1,5,6},{-1},{-1},{-1},{-1},{4,2,3,4,5},{1,2,5,6},{2,2,3,4},{3,1,3,4},{-1},{3,1,2,4},{-1},{3,2,3,6},{-1},{-1},{3,1,5,6},{3,3,4,6},{-1},{3,3,4,6},{-1},{3,1,3,4},{-1},{-1},{3,2,3,6},{3,1,4,6},{-1},{3,1,4,6},{-1},{3,1,3,4},{-1},{-1},{-1},{1,3,5,6},{2,2,3,4},{3,1,3,4},{-1},{3,1,2,4},{-1},{3,2,3,6},{-1},{-1},{3,1,5,6},{3,2,4,6},{-1},{3,2,4,6},{-1},{3,1,2,4},{-1},{-1},{3,2,3,6},{3,1,4,6},{-1},{3,1,4,6},{-1},{3,1,2,4},{-1},{-1},{-1},{1,2,3,4},{3,1,5,6},{3,2,3,6},{-1},{3,2,3,6},{-1},{1,3,4,5},{-1},{-1},{3,1,5,6},{3,2,3,6},{-1},{3,2,3,6},{-1},{1,2,4,5},{-1},{-1},{4,1,2,3,4},{2,1,2,3},{-1},{3,1,5,6},{-1},{3,1,5,6},{-1},{-1},{-1},{-1},{-1},{3,4,5,6},{4,1,3,4,5},{2,1,5,6},{3,2,4,5},{3,3,4,6},{-1},{3,2,3,6},{-1},{3,3,4,6},{-1},{-1},{3,1,3,4},{3,2,4,6},{-1},{3,2,4,6},{-1},{3,2,3,6},{-1},{-1},{1,1,3,4},{3,3,4,6},{-1},{3,1,2,5},{-1},{3,2,4,5},{-1},{-1},{-1},{2,3,5,6},{3,2,4,5},{3,1,4,6},{-1},{3,1,2,6},{-1},{3,1,4,6},{-1},{-1},{3,1,3,4},{3,2,4,6},{-1},{3,2,4,6},{-1},{3,1,2,6},{-1},{-1},{1,1,3,4},{3,1,2,5},{-1},{3,1,4,6},{-1},{3,2,4,5},{-1},{-1},{-1},{4,1,2,3,5},{3,1,2,6},{1,1,3,5},{-1},{1,1,3,4},{-1},{3,1,3,6},{-1},{-1},{2,1,3,4},{3,2,4,6},{-1},{3,2,4,6},{-1},{1,1,3,4},{-1},{-1},{3,1,2,6},{1,3,5,6},{-1},{1,1,3,4},{-1},{3,1,3,6},{-1},{-1},{-1},{-1},{4,1,3,4,6},{1,1,5,6},{2,1,3,4},{3,2,3,4},{-1},{3,1,2,4},{-1},{3,1,3,5},{-1},{-1},{3,1,3,5},{3,2,4,5},{-1},{3,2,4,5},{-1},{3,2,3,4},{-1},{-1},{3,2,5,6},{3,3,4,5},{-1},{3,2,3,4},{-1},{3,3,4,5},{-1},{-1},{-1},{1,3,5,6},{2,1,3,4},{3,2,3,4},{-1},{3,1,2,4},{-1},{3,1,3,5},{-1},{-1},{3,1,3,5},{3,2,4,5},{-1},{3,2,4,5},{-1},{3,1,2,4},{-1},{-1},{3,2,5,6},{3,1,4,5},{-1},{3,1,2,4},{-1},{3,1,4,5},{-1},{-1},{-1},{1,1,3,4},{3,1,3,5},{3,2,5,6},{-1},{3,1,2,6},{-1},{3,1,2,6},{-1},{-1},{3,1,3,5},{3,1,2,6},{-1},{3,2,5,6},{-1},{3,2,3,6},{-1},{-1},{4,1,2,3,4},{3,2,5,6},{-1},{2,1,2,3},{-1},{3,2,5,6},{-1},{-1},{-1},{-1},{4,1,3,4,5},{1,1,5,6},{2,1,3,4},{3,2,3,4},{-1},{3,1,2,4},{-1},{3,1,3,6},{-1},{-1},{3,2,5,6},{3,3,4,6},{-1},{3,3,4,6},{-1},{3,2,3,4},{-1},{-1},{3,1,3,6},{3,2,4,6},{-1},{3,2,4,6},{-1},{3,2,3,4},{-1},{-1},{-1},{1,3,5,6},{2,1,3,4},{3,2,3,4},{-1},{3,1,2,4},{-1},{3,1,3,6},{-1},{-1},{3,2,5,6},{3,1,4,6},{-1},{3,1,4,6},{-1},{3,1,2,4},{-1},{-1},{3,1,3,6},{3,2,4,6},{-1},{3,2,4,6},{-1},{3,1,2,4},{-1},{-1},{-1},{1,1,3,4},{3,1,3,6},{3,2,5,6},{-1},{3,1,2,5},{-1},{3,1,2,5},{-1},{-1},{3,1,3,6},{3,1,2,5},{-1},{3,2,5,6},{-1},{3,2,3,5},{-1},{-1},{4,1,2,3,4},{3,2,5,6},{-1},{2,1,2,3},{-1},{3,2,5,6},{-1},{-1},{-1},{-1},{-1},{3,4,5,6},{4,1,2,4,5},{2,1,5,6},{3,3,4,5},{3,2,4,6},{-1},{3,2,3,6},{-1},{3,2,4,6},{-1},{-1},{3,1,2,4},{3,3,4,6},{-1},{3,3,4,6},{-1},{3,2,3,6},{-1},{-1},{1,1,2,4},{3,2,4,6},{-1},{3,1,3,5},{-1},{3,3,4,5},{-1},{-1},{-1},{2,2,5,6},{3,3,4,5},{3,1,4,6},{-1},{3,1,3,6},{-1},{3,1,4,6},{-1},{-1},{3,1,2,4},{3,3,4,6},{-1},{3,3,4,6},{-1},{3,1,3,6},{-1},{-1},{1,1,2,4},{3,1,3,5},{-1},{3,1,4,6},{-1},{3,3,4,5},{-1},{-1},{-1},{4,1,2,3,5},{3,1,3,6},{1,1,2,5},{-1},{1,1,2,4},{-1},{3,1,2,6},{-1},{-1},{3,1,3,6},{1,2,5,6},{-1},{1,1,2,4},{-1},{3,1,2,6},{-1},{-1},{2,1,2,4},{3,3,4,6},{-1},{3,3,4,6},{-1},{1,1,2,4},{-1},{-1},{-1},{-1},{4,1,2,4,6},{1,1,5,6},{2,1,2,4},{3,2,3,4},{-1},{3,1,3,4},{-1},{3,1,2,5},{-1},{-1},{3,1,2,5},{3,3,4,5},{-1},{3,3,4,5},{-1},{3,2,3,4},{-1},{-1},{3,3,5,6},{3,2,4,5},{-1},{3,2,3,4},{-1},{3,2,4,5},{-1},{-1},{-1},{1,2,5,6},{2,1,2,4},{3,2,3,4},{-1},{3,1,3,4},{-1},{3,1,2,5},{-1},{-1},{3,1,2,5},{3,3,4,5},{-1},{3,3,4,5},{-1},{3,1,3,4},{-1},{-1},{3,3,5,6},{3,1,4,5},{-1},{3,1,3,4},{-1},{3,1,4,5},{-1},{-1},{-1},{1,1,2,4},{3,1,2,5},{3,3,5,6},{-1},{3,1,3,6},{-1},{3,1,3,6},{-1},{-1},{3,1,2,5},{3,1,3,6},{-1},{3,3,5,6},{-1},{3,2,3,6},{-1},{-1},{4,1,2,3,4},{3,3,5,6},{-1},{3,3,5,6},{-1},{2,1,2,3},{-1},{-1},{-1},{-1},{4,1,2,4,5},{1,1,5,6},{2,1,2,4},{3,2,3,4},{-1},{3,1,3,4},{-1},{3,1,2,6},{-1},{-1},{3,3,5,6},{3,2,4,6},{-1},{3,2,4,6},{-1},{3,2,3,4},{-1},{-1},{3,1,2,6},{3,3,4,6},{-1},{3,3,4,6},{-1},{3,2,3,4},{-1},{-1},{-1},{1,2,5,6},{2,1,2,4},{3,2,3,4},{-1},{3,1,3,4},{-1},{3,1,2,6},{-1},{-1},{3,3,5,6},{3,1,4,6},{-1},{3,1,4,6},{-1},{3,1,3,4},{-1},{-1},{3,1,2,6},{3,3,4,6},{-1},{3,3,4,6},{-1},{3,1,3,4},{-1},{-1},{-1},{1,1,2,4},{3,1,2,6},{3,3,5,6},{-1},{3,1,3,5},{-1},{3,1,3,5},{-1},{-1},{3,1,2,6},{3,1,3,5},{-1},{3,3,5,6},{-1},{3,2,3,5},{-1},{-1},{4,1,2,3,4},{3,3,5,6},{-1},{3,3,5,6},{-1},{2,1,2,3},{-1},{-1},{-1},{-1},{-1}};

void init(int T) {

}

void orderCoins() {
    vector<int> adj[7];
    vector<array<int, 6>> qry;
    int p=0;
    for(int i=0; i<6; i++) {
        int x=vec[p][1], y=vec[p][2], z=vec[p][3], w=vec[p][4];
        int t=0;
        if(vec[p][0]==1) t=getHeaviest(x, y, z);
        else if(vec[p][0]==2) t=getLightest(x, y, z);
        else if(vec[p][0]==3) t=getMedian(x, y, z);
        else t=getNextLightest(x, y, z, w);
        qry.push_back({vec[p][0], x, y, z, w, t});
        p++;
        if(t==y || t==z) {
            int sum=0;
            for(int j=p; j<727; j++) {
                if(vec[j][0]<0) sum--;
                else sum++;
                if(sum==0) {
                    p=j+1; break;
                }
            }
        }
        if(t==z) {
            int sum=0;
            for(int j=p; j<727; j++) {
                if(vec[j][0]<0) sum--;
                else sum++;
                if(sum==0) {
                    p=j+1; break;
                }
            }
        }
    }
    vector<int> vec;
    for(int i=1; i<=6; i++) vec.push_back(i);
    do {
        bool flag=true;
        for(auto [o, x, y, z, w, t]:qry) {
            if(o==1) {
                if(max({vec[x-1], vec[y-1], vec[z-1]})!=vec[t-1]) {
                    flag=false; break;
                }
            }
            else if(o==2) {
                if(min({vec[x-1], vec[y-1], vec[z-1]})!=vec[t-1]) {
                    flag=false; break;
                }
            }
            else if(o==3) {
                if(vec[x-1]+vec[y-1]+vec[z-1]-max({vec[x-1], vec[y-1], vec[z-1]})-min({vec[x-1], vec[y-1], vec[z-1]})!=vec[t-1]) {
                    flag=false; break;
                }
            }
            else {
                if(max({vec[x-1], vec[y-1], vec[z-1]})<vec[w-1]) {
                    if(vec[x-1]==min({vec[x-1], vec[y-1], vec[z-1]})) {
                        if(x!=t) {
                            flag=false; break;
                        }
                    }
                    if(vec[y-1]==min({vec[x-1], vec[y-1], vec[z-1]})) {
                        if(y!=t) {
                            flag=false; break;
                        }
                    }
                    if(vec[z-1]==min({vec[x-1], vec[y-1], vec[z-1]})) {
                        if(z!=t) {
                            flag=false; break;
                        }
                    }
                }
                else if(vec[x-1]>vec[w-1] && (vec[y-1]<vec[w-1] || vec[y-1]>vec[x-1]) && (vec[z-1]<vec[w-1] && vec[z-1]>vec[x-1])) {
                    if(x!=t) {
                        flag=false; break;
                    }
                }
                else if(vec[y-1]>vec[w-1] && (vec[x-1]<vec[w-1] || vec[x-1]>vec[y-1]) && (vec[z-1]<vec[w-1] && vec[z-1]>vec[y-1])) {
                    if(y!=t) {
                        flag=false; break;
                    }
                }
                else if(vec[z-1]>vec[w-1] && (vec[x-1]<vec[w-1] || vec[x-1]>vec[z-1]) && (vec[y-1]<vec[w-1] && vec[y-1]>vec[z-1])) {
                    if(z!=t) {
                        flag=false; break;
                    }
                }
            }
        }
        if(!flag) continue;
        int ans[6];
        for(int i=0; i<6; i++) ans[vec[i]-1]=i+1;
        answer(ans);
    }while(next_permutation(vec.begin(), vec.end()));
}
#Verdict Execution timeMemoryGrader output
Fetching results...