Submission #482726

#TimeUsernameProblemLanguageResultExecution timeMemory
482726dxz05Scales (IOI15_scales)C++14
0 / 100
1 ms256 KiB
#include "scales.h"
#include <bits/stdc++.h>

using namespace std;

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

map<vector<int>, int> mem[4];

int Lightest(int A, int B, int C){
    if (mem[0].find({A, B, C}) != mem[0].end()) return mem[0][{A, B, C}];
    return mem[0][{A, B, C}] = getLightest(A, B, C);
}

int Median(int A, int B, int C){
    if (mem[1].find({A, B, C}) != mem[1].end()) return mem[1][{A, B, C}];
    return mem[1][{A, B, C}] = getMedian(A, B, C);
}

int Heaviest(int A, int B, int C){
    if (mem[2].find({A, B, C}) != mem[2].end()) return mem[2][{A, B, C}];
    return mem[2][{A, B, C}] = getHeaviest(A, B, C);
}

int NextLightest(int A, int B, int C, int D){
    if (mem[3].find({A, B, C, D}) != mem[3].end()) return mem[3][{A, B, C, D}];
    return mem[3][{A, B, C, D}] = getNextLightest(A, B, C, D);
}

void orderCoins() {
    /* ... */
    int W[] = {1, 2, 3, 4, 5, 6};

    for (int i = 0; i < 3; i++){
        for (int j = i; j < 6; j++){
            vector<int> v;
            for (int k = i; k < 6; k++){
                if (k != j) v.push_back(k);
            }

            bool ok = true;

            if (v.size() & 1){
                v.push_back(v[v.size() - 2]);
            }

            for (int k = 0; k + 1 < v.size(); k += 2){
                ok &= Lightest(W[j], W[v[k]], W[v[k + 1]]) == W[j];
            }

            if (ok){
                swap(W[i], W[j]);
                break;
            }
        }
    }

    int A = Lightest(W[3], W[4], W[5]);
    int B = Median(W[3], W[4], W[5]);

    W[5] = W[3] + W[4] + W[5] - A - B;
    W[3] = A, W[4] = B;

    answer(W);
}

Compilation message (stderr)

scales.cpp: In function 'void init(int)':
scales.cpp:6:15: warning: unused parameter 'T' [-Wunused-parameter]
    6 | void init(int T) {
      |           ~~~~^
scales.cpp: In function 'void orderCoins()':
scales.cpp:49:35: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   49 |             for (int k = 0; k + 1 < v.size(); k += 2){
      |                             ~~~~~~^~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...