# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
99155 | eriksuenderhauf | 저울 (IOI15_scales) | C++11 | 3 ms | 512 KiB |
이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
//#pragma GCC optimize("O3")
#include <bits/stdc++.h>
#include "scales.h"
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
#define enl printf("\n")
#define case(t) printf("Case #%d: ", (t))
#define ni(n) scanf("%d", &(n))
#define nl(n) scanf("%I64d", &(n))
#define nai(a, n) for (int i = 0; i < (n); i++) ni(a[i])
#define nal(a, n) for (int i = 0; i < (n); i++) nl(a[i])
#define pri(n) printf("%d\n", (n))
#define prl(n) printf("%I64d\n", (n))
#define pii pair<int, int>
#define pll pair<long long, long long>
#define vii vector<pii>
#define vi vector<int>
#define pb push_back
#define mp make_pair
#define fi first
#define se second
using namespace std;
using namespace __gnu_pbds;
typedef long long ll;
typedef cc_hash_table<int,int,hash<int>> ht;
const double pi = acos(-1);
const int MOD = 1e9 + 7;
const int INF = 1e9 + 7;
const int MAXN = 1e6 + 5;
const double eps = 1e-9;
void init(int t) {
}
void answer2(vi ans) {
int tmp[] = {ans[0],ans[1],ans[2],ans[3],ans[4],ans[5]};
answer(tmp);
}
void orderCoins() {
//srand(time(0));
vi c = {1, 2, 3, 4, 5, 6};
//random_shuffle(c.begin(), c.end());
int x = getLightest(c[0], c[1], c[2]);
int y = getLightest(c[3], c[4], c[5]);
int x2 = getHeaviest(c[0], c[1], c[2]);
int y2 = getHeaviest(c[3], c[4], c[5]);
//int z = getLightest(x, y, (x == 1) ? 2 : 1);
vi a = {x, c[0]+c[1]+c[2] - x - x2, x2};
vi b = {y, c[3]+c[4]+c[5] - y - y2, y2};
x = getNextLightest(a[0], a[1], a[2], b[0]);
if (x == a[1]) {
//nx = {a[0], b[0], a[1], a[2]};
x = getMedian(b[1], b[2], a[1]);
if (x == a[1]) {
//nx = {a[0], b[0], b[1], a[1], a[2]};
if (getHeaviest(a[1], a[2], b[2]) == a[2])
answer2({a[0], b[0], b[1], a[1], b[2], a[2]});
else
answer2({a[0], b[0], b[1], a[1], a[2], b[2]});
//nx = {a[0], b[0], a[1], b[1], a[2]};
} else if (x == b[1]) {
//nx = {a[0], b[0], a[1], a[2], b[1]};
x = getMedian(b[1], b[2], a[2]);
if (x == b[1])
answer2({a[0], b[0], a[1], a[2], b[1], b[2]});
else if (x == b[2])
answer2({a[0], b[0], a[1], b[1], b[2], a[2]});
else
answer2({a[0], b[0], a[1], b[1], a[2], b[2]});
} else if (x == b[2])
answer2({a[0], b[0], b[1], b[2], a[1], a[2]});
return;
} else if (x == a[2]) {
//nx = {a[0], a[1], b[0], a[2]};
x = getMedian(b[1], b[2], a[2]);
if (x == b[1])
answer2({a[0], a[1], b[0], a[2], b[1], b[2]});
else if (x == b[2])
answer2({a[0], a[1], b[0], b[1], b[2], a[2]});
else
answer2({a[0], a[1], b[0], b[1], a[2], b[2]});
} else {
if (getLightest(b[0], a[0], b[1]) == a[0]) {
answer2({a[0],a[1],a[2],b[0],b[1],b[2]});
return;
}
//cerr <<"X:";
// nx = {b[0], a[0], a[1], a[2]};
x = getMedian(a[1], b[1], b[2]);
if (x == a[1]) {
//cerr <<"XX:";
x = getMedian(a[0], b[1], b[0]);
y = getMedian(a[1], b[2], a[2]);
if (x == b[1] && y == b[2])
answer2({b[0], b[1], a[0], a[1], b[2], a[2]});
else if (x == b[1] && y == a[2])
answer2({b[0], b[ 1], a[0], a[1], a[2], b[2]});
else if (x == a[0] && y == b[2])
answer2({b[0], a[0], b[1], a[1], b[2], a[2]});
else
answer2({b[0], a[0], b[1], a[1], a[2], b[2]});
} else if (x == b[1]) {
//cerr <<"XY:";
x = getMedian(b[1], b[2], a[2]);
if (x == b[1])
answer2({b[0], a[0], a[1], a[2], b[1], b[2]});
else if (x == b[2])
answer2({b[0], a[0], a[1], b[1], b[2], a[2]});
else
answer2({b[0], a[0], a[1], b[1], a[2], b[2]});
} else {
//cerr <<"XZ:";
x = getMedian(b[1], b[2], a[0]);
if (x == b[1])
answer2({b[0], a[0], b[1], b[2], a[1], a[2]});
else if (x == b[2])
answer2({b[0], b[1], b[2], a[0], a[1], a[2]});
else
answer2({b[0], b[1], a[0], b[2], a[1], a[2]});
}
}
}
/*int main()
{
ofstream fout("scales-3.in");
fout << "720\n";
vi x = {1,2,3,4,5,6};
do {
for (int i = 0; i < 6; i++) fout << x[i] << " ";
fout << "\n";
} while (next_permutation(x.begin(), x.end()));
return 0;
}*/
컴파일 시 표준 에러 (stderr) 메시지
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |