Submission #1246491

#TimeUsernameProblemLanguageResultExecution timeMemory
1246491SpyrosAlivScales (IOI15_scales)C++20
0 / 100
0 ms320 KiB
#include "scales.h" #include <bits/stdc++.h> using namespace std; void init(int T) { /* ... */ } void orderCoins() { /* ... */ vector<int> curr; for (int i = 1; i <= 6; i++) curr.push_back(i); vector<int> a, b; int tot = 0; int med = getMedian(curr[0], curr[1], curr[2]); int mx = getHeaviest(curr[0], curr[1], curr[2]); tot += 2; int mn = med ^ mx ^ curr[0] ^ curr[1] ^ curr[2]; a.push_back(mn); a.push_back(med); a.push_back(mx); med = getMedian(curr[3], curr[4], curr[5]); mx = getHeaviest(curr[3], curr[4], curr[5]); tot += 2; mn = med ^ mx ^ curr[3] ^ curr[4] ^ curr[5]; b.push_back(mn); b.push_back(med); b.push_back(mx); vector<int> ord; int pa = 0, pb = 0; while (pa < 3 && pb < 3) { vector<int> qr; qr.push_back(a[pa]); qr.push_back(b[pb]); mn = 1; if (pa < 2) qr.push_back(a[pa+1]); else if (pb < 2) qr.push_back(b[pb+1]); else { mn = 0; qr.push_back(a[pa-1]); } if (mn) { int nxt = getLightest(qr[0], qr[1], qr[2]); tot++; ord.push_back(nxt); if (a[pa] == nxt) pa++; else pb++; } else { int nxt = a[pa] ^ b[pb] ^ getHeaviest(qr[0], qr[1], qr[2]); ord.push_back(nxt); if (a[pa] == nxt) pa++; else pb++; } } while (pa < 3) { ord.push_back(a[pa++]); } while (pb < 3) { ord.push_back(b[pb++]); } int fin[6]; for (int i = 0; i < 6; i++) fin[i] = ord[i]; cout << tot << "\n"; answer(fin); }
#Verdict Execution timeMemoryGrader output
Fetching results...