# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
840556 | PagodePaiva | Scales (IOI15_scales) | C++17 | 1 ms | 304 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;
void init(int T) {
/* ... */
}
void orderCoins(){
map <int, int> res;
int maxval = getHeaviest(1, 2, 3);
int sv = maxval;
int maxval2 = getHeaviest(4, 5, 6);
maxval = getHeaviest(maxval, maxval2, (maxval != 1 and maxval2 != 1? 1 : (maxval != 2 and maxval2 != 2 ? 2 : 3)));
res[maxval] = 1;
vector <int> a1;
for(int i = 1;i <= 3;i++){
if(res[i] == 0) a1.push_back(i);
}
vector <int> a2;
for(int i = 4;i <= 6;i++){
if(res[i] == 0) a2.push_back(i);
}
if(a1.size() == 2){
int a = a1[0];
int b = a1[1];
int t = getHeaviest(maxval2, a, b);
res[t] = 2;
}
else{
int a = a2[0];
int b = a2[1];
int t = getHeaviest(sv, a, b);
res[t] = 2;
}
vector <int> v;
for(int i = 1;i <= 6;i++){
if(res[i] == 0) v.push_back(i);
}
int t = getHeaviest(v[0], v[1], v[2]);
int pos = (t == v[0] ? 0 : (t == v[1] ? 1 : 2));
swap(v[0], v[pos]);
t = getMedian(v[0], v[1], v[3]);
if(t == v[0]){
res[v[3]] = 3;
res[v[0]] = 4;
t = getMedian(v[0], v[1], v[2]);
if(t == v[1]){
res[v[1]] = 5;
res[v[2]] = 6;
}
else{
res[v[2]] = 5;
res[v[1]] = 6;
}
}
else if(t == v[1]){
res[v[0]] = 3;
int t = getNextLightest(maxval, v[1], v[3], v[2]);
if(t == maxval){
res[v[2]] = 4;
res[v[1]] = 5;
res[v[3]] = 6;
}
else if(t == v[1]){
res[v[1]] = 4;
res[v[3]] = 6;
res[v[2]] = 5;
}
else{
res[v[1]] = 4;
res[v[3]] = 5;
res[v[2]] = 6;
}
}
else{
res[v[0]] = 3;
swap(v[1], v[3]);
int t = getNextLightest(maxval, v[1], v[3], v[2]);
if(t == maxval){
res[v[2]] = 4;
res[v[1]] = 5;
res[v[3]] = 6;
}
else if(t == v[1]){
res[v[1]] = 4;
res[v[3]] = 6;
res[v[2]] = 5;
}
else{
res[v[1]] = 4;
res[v[3]] = 5;
res[v[2]] = 6;
}
}
vector <pair <int , int>> aa;
for(int i = 1;i <= 6;i++){
aa.push_back({res[i], i});
}
sort(aa.begin(), aa.end());
vector <int> ans;
for(auto x : aa){
ans.push_back(x.second);
}
int W[6];
for(int i = 0;i < 6;i++){
W[i] = ans[i];
}
answer(W);
return;
}
Compilation message (stderr)
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |