Submission #639832

#TimeUsernameProblemLanguageResultExecution timeMemory
639832piOOEScales (IOI15_scales)C++17
45.96 / 100
1 ms212 KiB
#include <bits/stdc++.h> #include "scales.h" using namespace std; void init(int T) { } constexpr int n = 6; void ord(int a[]) { int x = getHeaviest(a[0], a[1], a[2]); int y = getMedian(a[0], a[1], a[2]); int z = a[0] + a[1] + a[2] - x - y; a[0] = x, a[1] = y, a[2] = z; } int p[n], a[3], b[3], ans[3]; mt19937 rnd(chrono::steady_clock::now().time_since_epoch().count()); void orderCoins() { int tmp[6]; iota(tmp, tmp + 6, 1); shuffle(tmp, tmp + 6, rnd); for (int i = 0; i < 3; ++i) { a[i] = tmp[i]; b[i] = tmp[i + 3]; } ord(a), ord(b); for (int i = 0; i < 3; ++i) { ans[i] = getNextLightest(a[0], a[1], a[2], b[i]); } if (ans[0] == ans[1] && ans[1] == ans[2] && ans[0] == a[2]) { //either all bigger or all smaller bool smaller = getLightest(a[0], a[1], b[1]) == b[1]; if (smaller) { smaller = getLightest(a[0], a[1], b[0]) == b[0]; if (smaller) { p[0] = a[0], p[1] = a[1], p[2] = a[2]; p[3] = b[0], p[4] = b[1], p[5] = b[2]; } else { p[1] = a[0], p[2] = a[1], p[3] = a[2]; p[0] = b[0], p[4] = b[1], p[5] = b[2]; } } else { smaller = getLightest(a[0], a[1], b[2]) == b[2]; if (smaller) { p[2] = a[0], p[3] = a[1], p[4] = a[2]; p[0] = b[0], p[1] = b[1], p[5] = b[2]; } else { p[3] = a[0], p[4] = a[1], p[5] = a[2]; p[0] = b[0], p[1] = b[1], p[2] = b[2]; } } reverse(p, p + n); answer(p); } else { int pntB = 0, pnt = 0; for (int i = 0; i < 3; ++i) { if (ans[i] == a[2]) { p[pnt++] = b[i]; ++pntB; } else { break; } } for (int i = 0; i < 3; ++i) { p[pnt++] = a[i]; while (pntB < 3 && ans[pntB] == a[i]) { p[pnt++] = b[pntB++]; } } reverse(p, p + n); answer(p); } }

Compilation message (stderr)

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