Submission #1271090

#TimeUsernameProblemLanguageResultExecution timeMemory
1271090FaggiScales (IOI15_scales)C++20
38.46 / 100
1 ms328 KiB
#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 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;
            }
        ord(v);
        vector<ll>q2;
        q2.pb(q[i]);
        q2.pb(getMedian(q[0],q[1],q[2]));
        for(k=0; k<sz(q); k++)
            if(q[k]!=q2[0]&&q[k]!=q2[1])
                q2.pb(q[k]);
        ret(v,q2);
        return;
    }
    ord(v);
    ord(q);
    ret(v,q);
    return;
}
#Verdict Execution timeMemoryGrader output
Fetching results...