Submission #1162149

#TimeUsernameProblemLanguageResultExecution timeMemory
1162149gustavo_dScales (IOI15_scales)C++20
55.56 / 100
1 ms328 KiB
#include "scales.h" #include <bits/stdc++.h> using namespace std; void init(int T) {} /* int getMedian(int A, int B, int C); int getHeaviest(int A, int B, int C); int getLightest(int A, int B, int C); int getNextLightest(int A, int B, int C, int D); */ // Olhar como é na STL void put(vector<int>& v, int i, int val) { vector<int> res; for (int j=0; j<i; j++) res.push_back(v[j]); res.push_back(val); for (int j=i; j<(int)v.size(); j++) { res.push_back(v[j]); } swap(v, res); } void rem(vector<int>&v, int val) { vector<int> res; for (int i=0; i<(int)v.size(); i++) { if (v[i] != val) res.push_back(v[i]); } swap(res, v); } void orderCoins() { int a, b, A, B; int c = getLightest(1, 2, 3); if (c == 1) a = 2, b = 3; else if (c == 2) a = 1, b = 3; else a = 1, b = 2; int C = getLightest(4, 5, 6); if (C == 4) A = 5, B = 6; else if (C == 5) A = 4, B = 6; else A = 4, B = 5; int ans[6]; ans[0] = getLightest(c, C, a); vector<int> tmp; if (ans[0] == c) { tmp = vector<int> {A, B}; ans[1] = getLightest(C, a, b); if (ans[1] != C) tmp.push_back(C); if (ans[1] != a) tmp.push_back(a); if (ans[1] != b) tmp.push_back(b); } else { tmp = vector<int> {a, b}; ans[1] = getLightest(c, A, B); if (ans[1] != c) tmp.push_back(c); if (ans[1] != A) tmp.push_back(A); if (ans[1] != B) tmp.push_back(B); } int l = getLightest(tmp[0], tmp[1], tmp[2]); rem(tmp, l); // TODO: certo? ans[5] = getHeaviest(tmp[0], tmp[1], tmp[2]); rem(tmp, ans[5]); tmp.push_back(l); ans[2] = getLightest(tmp[0], tmp[1], tmp[2]); ans[3] = getMedian(tmp[0], tmp[1], tmp[2]); ans[4] = tmp[0] + tmp[1] + tmp[2] - ans[2] - ans[3]; answer(ans); }
#Verdict Execution timeMemoryGrader output
Fetching results...