# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
470182 | Cross_Ratio | Scales (IOI15_scales) | C++14 | 0 ms | 0 KiB |
이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include <bits/stdc++.h>
#include "scales.h"
using namespace std;
void init(int T) {return;}
void orderCoins() {
int a = getLightest(1, 2, 3);
int b = getMedian(1, 2, 3);
int c = 6 - a - b;
//assert(getHeaviest(1,2,3)==c);
int d = getLightest(4, 5 ,6);
int e = getMedian(4, 5, 6);
int f = 15 - d - e;
//assert(getHeaviest(4,5,6)==f);
// a b c / d e f
int k1 = getNextLightest(a, b, c, e);
if(k1 == b) {
// a e b c
assert(getMedian(a,e,b)==e);
int k2 = getNextLightest(e, b, c, f);
int k3 = getMedian(a, d, e);
if(k2==e) {
if(k3==a) {
int ans[6] = {d,a,e,b,c,f};
answer(ans);
return;
}
if(k3==d) {
int ans[6] = {a,d,e,b,c,f};
answer(ans);
return;
}
}
if(k2==b) {
if(k3==a) {
int ans[6] = {d,a,e,f,b,c};
answer(ans);
return;
}
if(k3==d) {
int ans[6] = {a,d,e,f,b,c};
answer(ans);
return;
}
}
if(k2==c) {
if(k3==a) {
int ans[6] = {d,a,e,b,f,c};
answer(ans);
return;
}
if(k3==d) {
int ans[6] = {a,d,e,b,f,c};
answer(ans);
return;
}
}
}
if(k1 == c) {
//a b e c
assert(isMedian(b,e,c)==e);
int k2 = getNextLightest(a, b, e, d);
int k3 = getMedian(e, c, f);
if(k2==a) {
if(k3==c) {
int ans[6] = {d,a,b,e,c,f};
answer(ans);
return;
}
if(k3==f) {
int ans[6] = {d,a,b,e,f,c};
answer(ans);
return;
}
}
if(k2==b) {
if(k3==c) {
int ans[6] = {a,d,b,e,c,f};
answer(ans);
return;
}
if(k3==f) {
int ans[6] = {a,d,b,e,f,c};
answer(ans);
return;
}
}
if(k2==e) {
if(k3==c) {
int ans[6] = {a,b,d,e,c,f};
answer(ans);
return;
}
if(k3==f) {
int ans[6] = {a,b,d,e,f,c};
answer(ans);
return;
}
}
}
// e a b c or a b c e
int k2 = getNextLightest(a,b,c,d);
if(k2==b) {
int ans[6] = {a,d,b,c,e,f};
answer(ans);
return;
}
if(k2==c) {
int ans[6] = {a,b,d,c,e,f};
answer(ans);
return;
}
if(k2==a) {
int k3 = getNextLightest(a,b,c,f);
if(k3==b) {
int ans[6] = {d,e,a,f,b,c};
answer(ans);
return;
}
if(k3==c) {
int ans[6] = {d,e,a,b,f,c};
answer(ans);
return;
}
if(k3==a) {
int k4 = getMedian(b, c, d);
assert(k4 != d);
if(k4==b) {
int ans[6] = {d,e,f,a,b,c};
answer(ans);
return;
}
if(k4==c) {
int ans[6] = {a,b,c,d,e,f};
answer(ans);
return;
}
}
}
}