#include <bits/stdc++.h>
#include "scales.h"
#define ll long long
#define sz(x) int(x.size())
#define forn(i, n) for (i = 0; i < n; i++)
#define all(x) x.begin(), x.end()
#define pb push_back
#define mp make_pair
#define fr first
#define se second
using namespace std;
/*
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 answer(int C[]);*/
void init(int T)
{
}
void ordQ(vector<ll> &q, ll x, bool rev=0)
{
vector<ll> q2;
q2.pb(x);
q2.pb(getMedian(q[0], q[1], q[2]));
for (ll k = 0; k < sz(q); k++)
if (q[k] != q2[0] && q[k] != q2[1])
q2.pb(q[k]);
if(rev)
reverse(all(q2));
q=q2;
}
void ord(vector<ll> &v)
{
vector<ll> ans;
ans.pb(getLightest(v[0], v[1], v[2]));
ans.pb(getMedian(v[0], v[1], v[2]));
for (ll i = 0; i < sz(v); i++)
if (v[i] != ans[0] && v[i] != ans[1])
ans.pb(v[i]);
v = ans;
}
void ret(vector<ll> &v, vector<ll> &q)
{
ll i;
int c[6];
for (i = 0; i < 3; i++)
c[i] = v[i];
for (i = 0; i < 3; i++)
c[i + 3] = q[i];
answer(c);
}
void orderCoins()
{
vector<ll> v, q;
q = {1, 2, 3};
ll i, x, sig = 4, j, y, z, k;
for (i = 0; i < 3; i++)
{
x = getLightest(q[0], q[1], q[2]);
v.pb(x);
for (j = 0; j < sz(q); j++)
if (q[j] == x)
q[j] = sig++;
}
x = getLightest(q[0], q[1], q[2]);
y = getHeaviest(v[0], v[1], v[2]);
for (i = 0; i < sz(q); i++)
if (x != q[i])
z = q[i];
k = getLightest(x, y, z);
if (k != y)
{
j = 0;
for (i = 0; i < sz(v); i++)
if (v[i] == y)
j = i;
for (i = 0; i < sz(q); i++)
if (q[i] == x)
{
swap(q[i], v[j]);
break;
}
ordQ(q,q[i]);
ordQ(v,v[j],1);
ret(v, q);
return;
}
ordQ(q,x);
ordQ(v,y,1);
ret(v, q);
return;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |