# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
424790 | ollel | Scales (IOI15_scales) | C++17 | 0 ms | 0 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 <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);
vi a = {2, 4, 6}, b = {1, 3, 5}
first[0] = getLightest(2, 4, 6);
first[1] = getMedian(2, 4, 6);
for (auto & i : a) if (i != first[0] && i != first[1]) first[2] = i;
second[0] = getLightest(1, 3, 5);
second[1] = getMedian(1, 3, 5);
for(auto &i : b) if (i != second[0] && i != second[1]) second[2] = i;
vi ordered;
int fi = 0, si = 0;
ordered.pb(getLightest(first[0], first[1], second[0]));
if (ordered[0] == first[0]) fi = 1;//ordered.pb(getLightest({first[1], first[2], second[0]}));
else si = 1;//ordered.pb(getLightest({first[0], first[1], second[1]}));
while (ordered.size() < 6) {
if (si < 3 && fi < 3) {
if (si != 2) ordered.pb(getLightest(first[fi], second[si], second[si + 1]));
else if (fi != 2) ordered.pb(getLightest(first[fi], first[fi + 1], second[si]));
else ordered.pb(getNextLightest(first[0], first[fi], second[si], ordered[ordered.size() - 1]));
if (ordered[ordered.size() - 1] == first[fi]) fi++;
else si++;
}
else if (si < 3) {
ordered.pb(second[si]); si++;
}
else {
ordered.pb(first[fi]); fi++;
}
}
int o[6];
rep(i,0,6) o[i] = ordered[i];
answer(o);
}
// int main(){
// orderCoins();
// }