# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
689799 | mychecksedad | 저울 (IOI15_scales) | C++17 | 1 ms | 212 KiB |
이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include <bits/stdc++.h>
#include <scales.h>
using namespace std;
void init(int T){
}
void answer(int W[]);
int getMedian(int A, int B, int C);
int getHeaviest(int A, int B, int C);
int getLightest(int A, int B, int C);
int getNextLightest(int A, int B, int C, int D);
void verase(int x, vector<int> &v){
for(int i = 0; i < v.size(); ++i){
if(v[i] == x){
v.erase(v.begin() + i);
return;
}
}
}
void orderCoins() {
int W[6];
vector<int> a(3), b(3);
a[0] = getLightest(1, 2, 3);
a[2] = getHeaviest(1, 2, 3);
a[1] = (a[0] != 1 && a[2] != 1 ? 1 : (a[0] != 2 && a[2] != 2 ? 2 : 3));
b[0] = getLightest(4, 5, 6);
b[2] = getHeaviest(4, 5, 6);
b[1] = (b[0] != 4 && b[2] != 4 ? 4 : (b[0] != 6 && b[2] != 6 ? 6 : 5));
int med = getMedian(a[2], b[2], a[1]);
if(med == a[1]){
W[5] = a[2];
W[4] = a[1];
verase(a[2], a);
verase(a[1], a);
}else if(med == a[2]){
W[5] = b[2];
W[4] = a[2];
verase(a[2], a);
verase(b[2], b);
}else{
W[5] = a[2];
W[4] = b[2];
verase(a[2], a);
verase(b[2], b);
}
if(a.size() == b.size()){
int med = getMedian(a[1], b[1], a[0]);
if(med == a[0]){
W[3] = a[1];
W[2] = a[0];
verase(a[1], a);
verase(a[0], a);
}else if(med == a[1]){
W[3] = b[1];
W[2] = a[1];
verase(a[1], a);
verase(b[1], b);
}else{
W[3] = a[1];
W[2] = b[1];
verase(a[1], a);
verase(b[1], b);
}
if(a.size() == b.size()){
int mn = getLightest(a[0], b[0], W[2]);
W[0] = mn;
W[1] = (mn == a[0] ? b[0] : a[0]);
}else{
if(a.empty())
W[0] = b[0], W[1] = b[1];
else
W[0] = a[0], W[1] = a[1];
}
}else{ // means that a.size == 1
int pos = getNextLightest(b[0], b[1], b[2], a[0]);
if(pos == b[0]){
int mn = getLightest(a[0], b[0], W[5]);
if(mn == a[0]){
W[0] = a[0];
W[1] = b[0];
W[2] = b[1];
W[3] = b[2];
}else{
W[0] = b[0];
W[1] = b[1];
W[2] = b[2];
W[3] = a[0];
}
}else{
W[0] = b[0];
int x = 1;
for(int i = 1; i < 3; ++i, x++){
if(pos == b[i]){
W[x] = a[0];
W[x + 1] = b[i];
x++;
}else W[x] = b[i];
}
}
}
answer(W);
}
컴파일 시 표준 에러 (stderr) 메시지
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |