Submission #1270329

#TimeUsernameProblemLanguageResultExecution timeMemory
1270329vtnooScales (IOI15_scales)C++20
45.45 / 100
0 ms332 KiB
#include <bits/stdc++.h>
#include "scales.h"

using namespace std;

int tt;

void init(int T){
    tt=T;
}

void orderCoins(){
    int N=6, jj=0;
    vector<bool> used(N+1, false);
    vector<int> ord(N);
    int numque=0;
    for(int i=1;i<=4;i++){
        /* cout<<"=============="<<endl;
        cout<<i<<endl; */
        vector<int> to_compare;
        for(int j=1;j<=N;j++){
            if(!used[j])to_compare.push_back(j);
        }
        vector<int> go;
        int mn=to_compare[0];
        for(int j=1;j<(int)to_compare.size();j++){
            go.push_back(to_compare[j]);
            if(go.size()==2){
                mn=getLightest(mn, go[0], go[1]);
                numque++;
                go.clear();
            }
        }
        
        if(!go.empty()&&to_compare.size()>1){
            for(int j=0;j<(int)to_compare.size();j++){
                if(to_compare[j]!=mn&&mn!=go[0]&&to_compare[j]!=go[0]){/* 
                    cout<<"LAST "<<to_compare[j]<<" "<<mn<<" "<<go[0]<<endl; */
                    mn=getLightest(to_compare[j], mn, go[0]);
                    numque++;
                    break;
                }
            }
        }
        ord[jj++]=mn;
        used[mn]=true;
    }
    int last=ord[jj-1];
    vector<int> c0;
    for(int i=1;i<=N;i++){
        if(!used[i]){
            c0.push_back(i);
        }
    }
    ord[jj++]=getMedian(last, c0[0], c0[1]);
    ord[jj]=(ord[jj-1]==c0[0]?c0[1]:c0[0]);
    answer(ord.data());
}
#Verdict Execution timeMemoryGrader output
Fetching results...