Submission #1294123

#TimeUsernameProblemLanguageResultExecution timeMemory
1294123goulthenScales (IOI15_scales)C++20
0 / 100
0 ms332 KiB
#include "scales.h" #include <bits/stdc++.h> using namespace std; #define pb push_back #define rep(i,a,b) for(int i = a; i <= b; ++i) void init(int T) { //MEH } void orderCoins() { int W[6]; set<int> l,r; rep(i,1,3) l.insert(i); rep(i,4,6) r.insert(i); int mn = getLightest(1,2,3), mn2 = getLightest(4,5,6); l.erase(mn); r.erase(mn2); vector<int> v; int tmp = getMedian(mn,mn2,*l.begin()); if(tmp == mn) v.insert(v.end(), {mn2,mn,*l.begin()}); else if(tmp == mn2) v.insert(v.end(), {mn,mn2, *l.begin()}); else v.insert(v.end(), {mn,*l.begin(), mn2}); l.erase(l.begin()); vector<int> ind(7); //{ind,} rep(i,0,2) ind[v[i]] = i; set<int> rst = {*l.begin(), *r.begin(), *r.rbegin()}; vector<int> gp; vector<int> st; int x = *l.begin() + *r.begin() + *r.rbegin(); gp.pb(getLightest(*l.begin(), *r.begin(), *r.rbegin())); gp.pb(getMedian(*l.begin(), *r.begin(), *r.rbegin())); gp.pb(x-gp[0]-gp[1]); for(int &x : gp) { st.pb((ind[getNextLightest(v[0],v[1],v[2], x)]+2)%3); } int L = 0, R = 0; while (L+R < 6) { if (st[R] < L) { W[L+R] = gp[R]; R++; } else { W[L+R] = v[L]; L++; } } answer(W); }
#Verdict Execution timeMemoryGrader output
Fetching results...