제출 #1156089

#제출 시각아이디문제언어결과실행 시간메모리
1156089aarb_.tomatexd저울 (IOI15_scales)C++20
0 / 100
0 ms320 KiB
#include <bits/stdc++.h>
#include "scales.h"
using namespace std;
#define ll long long 

void init(int t){
    
}

void orderCoins() {
    /* ... */
    vector<int> x(6,0);
    
    int a = getLightest(1,2,3);
    int b = getLightest(4,5,6);
    int c = (a+1)%3; //si 1 => 2 yasi
    int d = getLightest(a,b,c); //ese es el mas liviano
    
    int a1 = getHeaviest(1,2,3);
    int b1 = getHeaviest(4,5,6);
    int c1 = (a+1)%3;
    int d1 = getHeaviest(a1,b1,c1);
    
    x[d-1] = 1; 
    x[d1-1] = 2;
    
    int i= 0;  while(x[i] != 0) i++;
    int j= i+1; while(x[j] != 0) j++;
    int k = j+1; while(x[k]!= 0) k++;
    int r = k+1; while(x[r] != 0)r++;
    //encuentras los 4 0s
    int W[] = {d, 0, 0, 0, 0, d1};
    
    int q1 = getLightest(i+1,j+1,k+1);
    int q2 = getLightest(j+1,k+1,r+1);
    
    //aqui ya tiens los dos menores y el mayor,
    
    if(q1==q2){
        W[1] = q1;
        x[q1-1] =3;
        int ii= 0;  while(x[ii] != 0) ii++;
        int jj= ii+1; while(x[jj] != 0) jj++;
        int kk = jj+1; while(x[kk]!= 0) kk++;
        int f3 = getLightest(ii, jj,kk);
        W[2] = f3;
        int f5 = getHeaviest(ii,jj,kk);
        W[4] = f5;
        int f4 = getMedian(ii,jj,kk);
        W[3] = f4;
        
    }else{
        int q3 = getLightest(i+1,r+1,d1);
        W[1] = q3;
        x[q3-1] = 3;
        int ii= 0;  while(x[ii] != 0) ii++;
        int jj= ii+1; while(x[jj] != 0) jj++;
        int kk = jj+1; while(x[kk]!= 0) kk++;
        
        int f3 = getLightest(ii, jj,kk);
        W[2] = f3;
        int f5 = getHeaviest(ii,jj,kk);
        W[4] = f5;
        int f4 = getMedian(ii,jj,kk);
        W[3] = f4;
    }
    answer(W);
}   
#Verdict Execution timeMemoryGrader output
Fetching results...