Submission #1091803

#TimeUsernameProblemLanguageResultExecution timeMemory
1091803MMihalevScales (IOI15_scales)C++14
55.56 / 100
1 ms604 KiB
#include "scales.h"
#include<deque>
using namespace std;

void init(int T)
{
    /* ... */
}

void orderCoins()
{
    int W[6];

    deque<int>q[2];

    int xo1=0;
    int el1=getLightest(1,2,3);
    int el2=getMedian(1,2,3);
    q[0].push_back(el1);
    q[0].push_back(el2);
    q[0].push_back(el1^el2^xo1);

    int xo2=7;
    el1=getLightest(4,5,6);
    el2=getMedian(4,5,6);
    q[1].push_back(el1);
    q[1].push_back(el2);
    q[1].push_back(el1^el2^xo2);

    int sz=0;

    while(1)
    {
        if(q[0].size()!=1 && q[1].size()!=1)
        {
            int cur=getLightest(q[0][0],q[0][1],q[1][0]);
            W[sz++]=cur;

            if(cur==q[0][0])q[0].pop_front();
            else q[1].pop_front();
        }
        else
        {
            if(q[0].size()>q[1].size())swap(q[0],q[1]);

            if(q[1].size()==3)
            {
                int mid=getMedian(q[0][0],q[1][0],q[1][1]);

                if(mid==q[1][0])
                {
                    W[sz++]=q[0][0];W[sz++]=q[1][0];W[sz++]=q[1][1];W[sz++]=q[1][2];
                }
                if(mid==q[0][0])
                {
                    W[sz++]=q[1][0];W[sz++]=q[0][0];W[sz++]=q[1][1];W[sz++]=q[1][2];
                }
                if(mid==q[1][1])
                {
                    W[sz++]=q[1][0];W[sz++]=q[1][1];

                    int mid2=getMedian(q[1][1],q[0][0],q[1][2]);

                    if(mid2==q[0][0]){W[sz++]=q[0][0];W[sz++]=q[1][2];}
                    else {W[sz++]=q[1][2];W[sz++]=q[0][0];}
                }
            }
            else
            {
                int mid=getMedian(q[0][0],q[1][0],q[1][1]);

                if(mid==q[1][0])
                {
                    W[sz++]=q[0][0];W[sz++]=q[1][0];W[sz++]=q[1][1];
                }
                else if(mid==q[0][0])
                {
                    W[sz++]=q[1][0];W[sz++]=q[0][0];W[sz++]=q[1][1];
                }
                else
                {
                    W[sz++]=q[1][0];W[sz++]=q[1][1];W[sz++]=q[0][0];
                }
            }
            break;
        }
    }

    answer(W);
}

Compilation message (stderr)

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