Submission #604369

#TimeUsernameProblemLanguageResultExecution timeMemory
604369cheissmartScales (IOI15_scales)C++14
45.45 / 100
1 ms212 KiB
#include "scales.h" #include <bits/stdc++.h> #define F first #define S second #define V vector #define PB push_back #define EB emplace_back #define MP make_pair #define SZ(v) int((v).size()) #define ALL(v) (v).begin(), (v).end() using namespace std; typedef long long ll; typedef pair<int, int> pi; typedef V<int> vi; const int INF = 1e9 + 7; void init(int T) { } void orderCoins() { vi ans(6); iota(ALL(ans), 1); auto go = [&] (int x, int y, int z) { int a = ans[x], b = ans[y], c = ans[z]; int mx = getHeaviest(a, b, c); int mn = getLightest(a, b, c); int md = a ^ b ^ c ^ mx ^ mn; ans[x] = mn, ans[y] = md, ans[z] = mx; }; auto go1 = [&] (int x, int y, int z) { // ans[x] < ans[y] int a = ans[x], b = ans[y], c = ans[z]; int md = getMedian(a, b, c); if(md == a) ans[x] = c, ans[y] = a, ans[z] = b; else if(md == c) ans[x] = a, ans[y] = c, ans[z] = b; }; auto go2 = [&] (int x, int y, int z) { // ans[y] < ans[z] int a = ans[x], b = ans[y], c = ans[z]; int md = getMedian(a, b, c); if(md == a) ans[x] = b, ans[y] = a, ans[z] = c; else if(md == c) ans[x] = b, ans[y] = c, ans[z] = a; }; go(0, 1, 2); go1(1, 2, 3); go2(0, 1, 2); { // insert 4 int tt = getNextLightest(ans[0], ans[1], ans[2], ans[4]); int val = ans[4]; ans.erase(ans.begin() + 4); if(tt == ans[1]) { ans.insert(ans.begin() + 1, val); } else if(tt == ans[2]) { ans.insert(ans.begin() + 2, val); } else { int md = getMedian(ans[0], ans[3], val); if(md == ans[0]) ans.insert(ans.begin(), val); else if(md == ans[3]) ans.insert(ans.begin() + 4, val); else ans.insert(ans.begin() + 3, val); } } { // insert 5 int tt = getNextLightest(ans[2], ans[3], ans[4], ans[5]); int val = ans[5]; ans.erase(ans.begin() + 5); if(tt == ans[3]) { ans.insert(ans.begin() + 3, val); } else if(tt == ans[4]) { ans.insert(ans.begin() + 4, val); } else { int ttt = getNextLightest(ans[0], ans[1], ans[2], val); if(ttt == ans[1]) { ans.insert(ans.begin() + 1, val); } else if(ttt == ans[2]) { ans.insert(ans.begin() + 2, val); } else { if(getLightest(ans[0], ans[4], val) == val) ans.insert(ans.begin(), val); else ans.insert(ans.begin() + 5, val); } } } int W[] = {ans[0], ans[1], ans[2], ans[3], ans[4], ans[5]}; answer(W); }

Compilation message (stderr)

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