제출 #1301842

#제출 시각아이디문제언어결과실행 시간메모리
1301842nicolo_010저울 (IOI15_scales)C++20
0 / 100
0 ms332 KiB
#include <bits/stdc++.h> #include "scales.h" using namespace std; using ll = long long; using pii = pair<int, int>; void init(int t) { return; } void complete(vector<int> &p) { set<int> full; for (int i=1; i<=6; i++) { full.insert(i); } for (int i=0; i<3; i++) { full.erase(p[i]); } int a, b, c; a=b=c=-1; for (auto x : full) { if (a==-1) { a=x; } else if (b==-1) { b=x; } else { c=x; } } int mx = getHeaviest(a, b, c); int md = getLightest(a, b, c); full.erase(mx); full.erase(md); p[3] = *full.begin(); p[4] = md; p[5] = mx; } void orderCoins() { vector<int> p(6); set<int> full; set<int> l, r; for (int i=1; i<=6; i++) { full.insert(i); if (i <= 3) { l.insert(i); } else { r.insert(i); } } int lmn = getLightest(1, 2, 3); int rmn = getLightest(4, 5, 6); int mdl = getMedian(1, 2, 3); l.erase(lmn); l.erase(mdl); r.erase(rmn); int md = getMedian(lmn, rmn, mdl); if (md == mdl) { p[0] = lmn; p[1] = mdl; p[2] = rmn; complete(p); int a[6]; for (int i=0; i<6; i++) { a[i] = p[i]; } answer(a); return; } else if (md==lmn) { p[0] = rmn; p[1] = lmn; full.erase(rmn); full.erase(lmn); full.erase(mdl); } else { //lmn < rmn < p[0] = lmn; p[1] = rmn; full.erase(rmn); full.erase(lmn); full.erase(mdl); } int mdr = getMedian(4, 5, 6); r.erase(mdr); full.erase(mdr); int mdd = getMedian(mdl, mdr, *r.begin()); if (mdd == mdl) { p[2] = mdr; p[3] = mdl; int mnn = getMedian(mdl, *r.begin(), *l.begin()); p[4] = mnn; full.erase(mnn); p[5] = *full.begin(); } else if (mdd == *r.begin()) { p[2] = mdr; p[3] = mdd; p[4] = mdl; p[5] = *l.begin(); } else { int mnn = getMedian(*l.begin(), *r.begin(), mdr); p[2] = mdl; if (mnn == *l.begin()) { p[3] = mdr; p[4] = mnn; p[5] = *r.begin(); } else if (mnn == mdr) { p[3] = *l.begin(); p[4] = mnn; p[5] = *r.begin(); } else { p[3] = mdr; p[4] = mnn; p[5] = *l.begin(); } } int a[6]; for (int i=0; i<6; i++) { a[i] = p[i]; } answer(a); }
#Verdict Execution timeMemoryGrader output
Fetching results...