# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
1271082 | Faggi | Scales (IOI15_scales) | C++20 | 0 ms | 0 KiB |
#include <bits/stdc++.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 init(int T){
}
void answer(int C[]);
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]));
ans.pb(getHeaviest(v[0],v[1],v[2]));
v=ans;
}
void orderCoins()
{
vector<ll>v, q;
int c[6];
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]);
z=getHeaviest(q[0],q[1],q[2]);
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]);
}
ord(v);
ord(q);
for(i=0; i<3; i++)
c[i]=v[i];
for(i=0; i<3; i++)
c[i+3]=q[i];
answer(c);
}