제출 #299577

#제출 시각아이디문제언어결과실행 시간메모리
299577mohamedsobhi777Scales (IOI15_scales)C++14
45.45 / 100
1 ms384 KiB
#include "scales.h"
#include<bits/stdc++.h>

using namespace std ; 

int Te ; 


void init(int T) {
        Te = T ;
    /* ... */
}

void orderCoins() {
    /* ... */
        int W[6] = {1 , 2,  3 , 4, 5 , 6} ; 
        int it = 0 ; 
        vector<int> perm[2] ; 
        perm[0] = { getLightest(1 , 2 , 3) , getMedian(1 , 2, 3) } ;
        perm[0].push_back(6 - perm[0][0] - perm[0][1]) ;

        perm[1] = { getLightest(4 , 5 , 6) , getMedian(4 , 5, 6) } ;
        perm[1].push_back(15 - perm[1][0] - perm[1][1]) ;

        int i = 0 , j = 0 ; 
        while( (i < 2 || j < 2) && max(i, j) < 3 ){
                vector<int> quest = {perm[0][i] , perm[1][j]} ;
                if(i < 2)quest.push_back(perm[0][i+1]) ; 
                else quest.push_back(perm[1][j+1]) ;

                int ans = getLightest(quest[0] , quest[1] , quest[2]) ;
                W[it++] = ans ; 
                if(ans == perm[0][i])
                        i++ ; 
                else j++ ; 
        }
        
        vector<int> rem ;
        int ii = i ; 
        int ij = j ;
        while(i < 3)rem.push_back(perm[0][i++]) ; 
        while(j < 3)rem.push_back(perm[1][j++]) ;

        if(ii == 3 || ij == 3){
                for(int r = 0 ; r < (int) rem.size() ;r++)
                        W[it++] = rem[r] ;
        }else{
                int ans = getMedian(W[0], rem[0] , rem[1]) ; 
                W[it++] = ans ;
                W[it++] = 21 - accumulate(W , W + 5 , 0);
        }

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