Submission #1194949

#TimeUsernameProblemLanguageResultExecution timeMemory
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...