Submission #1066297

#TimeUsernameProblemLanguageResultExecution timeMemory
1066297ptf62331Scales (IOI15_scales)C++14
0 / 100
1 ms348 KiB
#include "scales.h" #include<bits/stdc++.h> using namespace std; #define vec vector void init(int T) { /* ... */ } void orderCoins() { /* ... */ int w[] = {1, 2, 3, 4, 5, 6}; answer(w);return; vec<int> right_part{4, 5, 6}; vec<int> left_part{1,2,3}; int x = getHeaviest(1, 2, 3); left_part.erase(find(left_part.begin(), left_part.end(), x)); int y = getHeaviest(4, 5, 6); right_part.erase(find(right_part.begin(), right_part.end(), y)); int z = getNextLightest(y, left_part[0], left_part[1], x); vec<int> cur{}; vec<int> rem{}; if(z != y) { swap(x, y); if(z == left_part[1]) { swap(left_part[0], left_part[1]); } int med = getMedian(left_part[0], left_part[1], x); if(med == left_part[0]) { left_part.insert(left_part.begin()+0, x); } else if(med == x) { left_part.insert(left_part.begin()+1, x); } else { assert(med == left_part[1]); left_part.insert(left_part.begin()+2, x); } cur = left_part; left_part.push_back(y); rem = right_part; } else { int med = getMedian(left_part[0], left_part[1], x); if(med != left_part[1]) { swap(left_part[0], left_part[1]); } cur = left_part; cur.push_back(x); cur.push_back(y); rem = right_part; } assert(rem.size() == 2); // y > x //cur is sorted // for rem we know only they're less than two last int a = getLightest(rem[0], rem[1], cur[0]); if(a==cur[0]) { int b = getLightest(rem[0], rem[1], cur[1]); if(b==cur[1]) { int c = getLightest(rem[0], rem[1], cur[2]); if(c==rem[1]) swap(rem[0], rem[1]); cur.insert(cur.begin()+2, rem[1]); cur.insert(cur.begin()+2, rem[2]); rem = {}; } else { if(b == rem[1]) swap(rem[0], rem[1]); cur.insert(cur.begin()+1, rem[0]); rem.erase(rem.begin()); int c = getLightest(rem[0], cur[1], cur[2]); if(c == cur[1]) { cur.insert(cur.begin()+3, rem[0]); rem = {}; } else { cur.insert(cur.begin()+2, rem[0]); rem = {}; } } } else { cur.insert(cur.begin()+0, a); rem.erase(find(rem.begin(), rem.end(), a)); int b = getMedian(cur[1], cur[2], rem[0]); if(b==rem[0]) { cur.insert(cur.begin()+2, rem[0]); } else if(b==cur[2]) { cur.insert(cur.begin()+3, rem[0]); } else { assert(b==cur[1]); cur.insert(cur.begin()+1, rem[0]); } rem = {}; } assert(cur.size() == 6); for(int i = 0; i<6; i++) { w[i] = cur[i]; cerr << w[i] << ' '; } cerr << '\n'; answer(w); }

Compilation message (stderr)

scales.cpp: In function 'void init(int)':
scales.cpp:7:15: warning: unused parameter 'T' [-Wunused-parameter]
    7 | void init(int T) {
      |           ~~~~^
#Verdict Execution timeMemoryGrader output
Fetching results...