제출 #1194949

#제출 시각아이디문제언어결과실행 시간메모리
1194949n3rm1n저울 (IOI15_scales)C++20
45.45 / 100
0 ms328 KiB
#include "scales.h"
#include<bits/stdc++.h>
#define pb push_back
using namespace std;
void init(int T) {

}

void orderCoins()
{
    int W[] = {1, 2, 3, 4, 5, 6};
   int median1 = getMedian(1, 2, 3);
   int median2 = getMedian(4, 5, 6);
   int lightest1 = getLightest(1, 2, 3);
   int lightest2 = getLightest(4, 5, 6);
   int sum1 = 6, sum2 = 15;
   vector < int > fh, sh;
   fh.pb(lightest1);
   fh.pb(median1);
   fh.pb(sum1 - lightest1 - median1);

   sh.pb(lightest2);
   sh.pb(median2);
   sh.pb(sum2 - lightest2 - median2);
    
   vector < int > g;
   int last_put = 0;

   for (int i = 0; i < 5; ++ i)
   {
       if(!fh.size())
       {
           while(sh.size())
           {
               g.pb(sh.back());
               sh.pop_back();
           }
           break;
       }
       if(!sh.size())
       {
           while(fh.size())
           {
               g.pb(fh.back());
               fh.pop_back();
           }
           break;
       }
       if(fh.size() == 1 && sh.size() == 1)
       {
           int sum = fh[0] + sh[0];
           int lightest = getLightest(fh[0], sh[0], last_put);
           g.pb(sum - lightest);
           g.pb(lightest);
           break;
       }
       int fsz = fh.size();
       int ssz = sh.size();
       if(fh.size() > sh.size())
       {

           int heaviest = getHeaviest(fh[fsz-1], fh[fsz-2], sh[ssz-1]);
           if(heaviest == fh[fsz - 1])fh.pop_back();
           else sh.pop_back();
           g.pb(heaviest);
           last_put = heaviest;
       }
       else
       {
           int heaviest = getHeaviest(fh[fsz-1], sh[ssz-1], sh[ssz - 2]);
           if(heaviest == fh[fsz - 1])fh.pop_back();
           else sh.pop_back();

           g.pb(heaviest);
           last_put = heaviest;
       }
   }
   reverse(g.begin(), g.end());
   for (int i = 0; i < 6; ++ i)
   {
       W[i] = g[i];
   }
    answer(W);
}
#Verdict Execution timeMemoryGrader output
Fetching results...