Submission #364649

#TimeUsernameProblemLanguageResultExecution timeMemory
364649BartolMScales (IOI15_scales)C++17
55.56 / 100
1 ms512 KiB
//#include "graderlib.c"
#include "scales.h"
#include <bits/stdc++.h>

using namespace std;

#define X first
#define Y second
#define mp make_pair
#define pb push_back
typedef long long ll;
typedef pair <int, int> pii;
typedef pair <int, pii> pip;
typedef pair <pii, int> ppi;
typedef pair <ll, ll> pll;

const int INF=0x3f3f3f3f;

int bio[10];
vector <int> sol;

void ubaci(int x, int pos=INF) {
    bio[x]=1;
    pos=min(pos, (int)sol.size());
    sol.insert(sol.begin()+pos, x);
}

int indeks(int x) {
    for (int i=0; i<(int)sol.size(); ++i) if (sol[i]==x) return i;
    return INF;
}

void ispis() {
    for (int x:sol) printf("%d ", x);
    printf("\n");
}

void init(int T) {
}

void orderCoins() {
    sol.clear();
    memset(bio, 0, sizeof bio);
    int p[6]={1, 2, 3, 4, 5, 6}, res[6]={0};

    //trojka
    ubaci(getLightest(p[0], p[1], p[2]));
    ubaci(getMedian(p[0], p[1], p[2]));
    if (bio[p[1]] && bio[p[2]]) ubaci(p[0]);
    else if (bio[p[2]] && bio[p[0]]) ubaci(p[1]);
    else ubaci(p[2]);

    //cetvrti
    int x=p[3];
    int br=getNextLightest(sol[0], sol[1], sol[2], x);
    if (br==sol[1]) ubaci(x, 1);
    else if (br==sol[2]) ubaci(x, 2);
    else {
        br=getHeaviest(sol[1], sol[2], x);
        if (br==x) ubaci(x);
        else ubaci(x, 0);
    }

    //peta
    x=p[4];
    br=getMedian(sol[1], sol[2], x);
    if (br==x) ubaci(x, 2);
    else if (br==sol[1]) {
        br=getMedian(sol[0], sol[1], x);
        if (br==sol[0]) ubaci(x, 0);
        else ubaci(x, 1);
    }
    else {
        br=getMedian(sol[2], sol[3], x);
        if (br==sol[3]) ubaci(x);
        else ubaci(x, 3);
    }
//    ispis();

    //sesta
    x=p[5];
    br=getMedian(sol[1], sol[2], x);
    if (br==x) ubaci(x, 2);
    else if (br==sol[2]) {
        br=getMedian(sol[3], sol[4], x);
        if (br==sol[3]) ubaci(x, 3);
        else if (br==x) ubaci(x, 4);
        else ubaci(x, 5);
    }
    else {
        br=getMedian(sol[0], sol[1], x);
        if (br==x) ubaci(x, 1);
        else ubaci(x, 0);
    }

    for (int i=0; i<6; ++i) res[i]=sol[i];
    answer(res);
    return;
}

Compilation message (stderr)

scales.cpp: In function 'void init(int)':
scales.cpp:38:15: warning: unused parameter 'T' [-Wunused-parameter]
   38 | void init(int T) {
      |           ~~~~^
#Verdict Execution timeMemoryGrader output
Fetching results...