# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
1061495 | anango | Scales (IOI15_scales) | C++17 | 1 ms | 392 KiB |
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include "scales.h"
#include <bits/stdc++.h>
using namespace std;
int testcases;
void init(int T) {
/* ... */
testcases = T;
}
void orderCoins() {
/* ... */
set<int> lev0;
set<int> lev1;
set<int> lev2;
set<int> lev3;
int a = 1; int b = 2; int c = 3; int d = 4; int e = 5; int f = 6;
//get the heaviest 3, then the lightest 1, then use the level method with medians
int h1 = getHeaviest(a,b,c);
int h2 = getHeaviest(d,e,f);
if (h1==a) swap(a,c);
if (h1==b) swap(b,c);
if (h2==d) swap(d,f);
if (h2==e) swap(e,f);
//so h1 is c and h2 is f
if (h1==getHeaviest(a,c,f)) {
swap(h1,h2);
swap(c,f);
swap(a,d);
swap(b,e);
}
//cout << "doing " << a <<" " << b <<" " << c <<" " << d <<" " << e <<" " << f << endl;
lev3={f};
//now f>c
//possibilities are: def,bcf,acf,cdf,cef
//basically, need to remove lightest of bcde
int a1 = getLightest(c,d,e);
if (a1==c) {
//def
lev2={d,e};
lev1={a,b,c};
}
else if (a1==d) {
//cef or bcf or acf
//want heaviest of a,b,e
lev2={getHeaviest(a,b,e),c};
lev1={a,b,c,d,e};
for (auto i:lev2) lev1.erase(i);
}
else if (a1==e) {
//cdf or bcf or acf
//want heaviest of a,b,d
lev2={getHeaviest(a,b,d),c};
lev1={a,b,c,d,e};
for (auto i:lev2) lev1.erase(i);
}
//cout << "doing " << a <<" " << b <<" " << c <<" " << d <<" " << e <<" " << f << endl;
a1 = *lev1.begin(); int b1 = *next(lev1.begin()); int c1 = *next(next(lev1.begin()));
int r = getLightest(a1,b1,c1);
lev1.erase(r);
lev0.insert(r);
/*cout << "LEVELS" << endl;
for (auto i:lev0) {
cout << i <<" ";
}
cout << endl;
for (auto i:lev1) {
cout << i <<" ";
}
cout << endl;
for (auto i:lev2) {
cout << i <<" ";
}
cout << endl;
for (auto i:lev3) {
cout << i <<" ";
}
cout << endl;*/
a = *lev0.begin();
b = *lev1.begin();
c = *lev1.rbegin();
d = *lev2.begin();
e = *lev2.rbegin();
f = *lev3.begin();
if (getMedian(b,c,d)==b) {
swap(b,c);
}
if (getMedian(c,d,e)==e) {
swap(d,e);
}
int W[6] = {a,b,c,d,e,f};
answer(W);
}
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |