# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
128035 | MoNsTeR_CuBe | Scales (IOI15_scales) | C++17 | 2 ms | 380 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() {
int W[] = {1, 2, 3, 4, 5, 6};
vector< int > left;
vector< int > right;
left.push_back(getLightest(W[0], W[1], W[2]));
left.push_back(getMedian(W[0], W[1], W[2]));
for(int i = 0; i < 3; i++){
bool verif = false;
for(int j = 0; j < 2; j++){
if(left[j] == W[i]) verif = true;
}
if(!verif) left.push_back(W[i]);
}
right.push_back(getLightest(W[3], W[4], W[5]));
right.push_back(getMedian(W[3], W[4], W[5]));
for(int i = 3; i < 6; i++){
bool verif = false;
for(int j = 0; j < 2; j++){
if(right[j] == W[i]) verif = true;
}
if(!verif) right.push_back(W[i]);
}
int rem = 6;
vector< int > ans;
while(rem > 3){
if((int)left.size() >= 2){
ans.push_back(getHeaviest(left.back(), left[left.size()-2], right.back()));
if(ans.back() == right.back()) right.pop_back();
if(ans.back() == left.back()) left.pop_back();
}else{
ans.push_back(getHeaviest(left.back(), right[right.size()-2], right.back()));
if(ans.back() == right.back()) right.pop_back();
if(ans.back() == left.back()) left.pop_back();
}
rem--;
}
vector< int > remaining;
if(left.size() == 3){
while(!left.empty()){
ans.push_back(left.back());
left.pop_back();
}
}else if(right.size() == 3){
while(!right.empty()){
ans.push_back(right.back());
right.pop_back();
}
}else{
while(!left.empty()){
remaining.push_back(left.back());
left.pop_back();
}
while(!right.empty()){
remaining.push_back(right.back());
right.pop_back();
}
ans.push_back(getHeaviest(remaining[0], remaining[1], remaining[2]));
ans.push_back(getMedian(remaining[0], remaining[1], remaining[2]));
for(int i = 0; i < 3; i++){
bool verif = false;
for(int j = 3; j < 5; j++){
if(remaining[i] == ans[j]){
verif = true;
}
}
if(!verif) ans.push_back(remaining[i]);
}
}
reverse(ans.begin(), ans.end());
for(int i = 0; i < 6; i++){
W[i] = ans[i];
}
answer(W);
}
Compilation message (stderr)
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |