# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
424802 | ollel | 저울 (IOI15_scales) | C++14 | 1 ms | 384 KiB |
이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include <bits/stdc++.h>
#include <iostream>
#include "scales.h"
using namespace std;
#define rep(i,a,b) for(int i = a; i < b; i++)
#define pb push_back
#define lso(x) x&(-x)
typedef long long ll;
typedef vector<int> vi;
typedef vector<vi> vvi;
int t;
// int getLightest(vi x) {
// cout << "lightest:";
// rep(i,0,3) cout << x[i] << " ";cout<<endl;
// int ans; cin >> ans; return ans;
// }
// int getNextLightest(vi x) {
// cout << "next lightest:";
// rep(i,0,4) cout << x[i] << " ";cout<<endl;
// int ans; cin >> ans; return ans;
// }
// int getMedian(vi x) {
// cout << "Median:";
// rep(i,0,3) cout << x[i] << " ";cout<<endl;
// int ans; cin >> ans; return ans;
// }
void init(int T) {t = T;}
// void answer(vi x) {rep(i,0,6) cout << x[i] << " ";}
void orderCoins() {
vi first(3), second(3);
first[0] = getLightest(1, 2, 3);
first[1] = getMedian(1, 2, 3);
rep(i, 1, 4) if (i != first[0] && i != first[1]) first[2] = i;
second[0] = getLightest(4, 5, 6);
second[1] = getMedian(4, 5, 6);
rep(i, 4, 7) if (i != second[0] && i != second[1]) second[2] = i;
vi ordered;
bool swp = false;
int ans = getNextLightest(second[0], second[1], second[2], first[0]);
if (ans == second[1]) {
swp = true;
swap(first, second);
}
if (ans == second[0] || swp) {
ordered.pb(first[0]);
ordered.pb(second[0]);
int x = getNextLightest(second[2], second[1], first[2], first[1]);
if (x == second[2]) {
ordered.pb(second[1]);
ordered.pb(first[1]);
ordered.pb(first[2]);
ordered.pb(second[2]);
}
else if (x == second[1]) {
ordered.pb(first[1]);
ordered.pb(second[1]);
int y = getNextLightest(first[0], second[2], first[2], second[1]);
if (y == first[2]) {
ordered.pb(first[2]);
ordered.pb(second[2]);
} else {
ordered.pb(second[2]);
ordered.pb(first[2]);
}
}
else if (x == first[2]) {
int y = getMedian(first[1], second[2], second[3]);
if (y == second[2]) {
ordered.pb(first[1]);
ordered.pb(first[2]);
ordered.pb(second[1]);
ordered.pb(second[2]);
} else if (y == first[1]) {
ordered.pb(second[1]);
ordered.pb(first[1]);
ordered.pb(first[2]);
ordered.pb(second[2]);
} else {
ordered.pb(second[1]);
ordered.pb(second[2]);
ordered.pb(first[1]);
ordered.pb(first[2]);
}
}
}
else {
ordered.pb(second[0]);
ordered.pb(second[1]);
ordered.pb(first[0]);
int med = getMedian(first[1], first[2], second[2]);
if (med == first[1]) {
ordered.pb(second[2]);
ordered.pb(first[1]);
ordered.pb(first[2]);
} else if (med == first[2]) {
ordered.pb(first[1]);
ordered.pb(first[2]);
ordered.pb(second[2]);
} else {
ordered.pb(first[1]);
ordered.pb(second[2]);
ordered.pb(first[2]);
}
}
int o[6];
rep(i,0,6) o[i] = ordered[i];
answer(o);
}
// int main(){
// orderCoins();
// }
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |