Submission #668404

# Submission time Handle Problem Language Result Execution time Memory
668404 2022-12-03T19:55:25 Z finn__ cmp (balkan11_cmp) C++17
100 / 100
1322 ms 96040 KB
#include <bits/stdc++.h>
#include "cmp.h"

size_t y[6] = {
    1,
    4097,
    5121,
    5377,
    5441,
    5457};

void remember(int n)
{
    for (size_t i = 0; i < 6; i++)
        bit_set((n >> (2 * i)) + y[i]);
}

int compare(int b)
{
    size_t u = 0, v = 6;
    while (u < v)
    {
        size_t m = (u + v) / 2;
        if (bit_get((b >> (2 * m)) + y[m]))
            v = m;
        else
            u = m + 1;
    }

    if (!u)
        return 0;

    int last = ((b >> (2 * (u - 1))) & 3);

    if (!last)
        return -1;
    if (last == 3)
        return 1;
    if (last == 1)
        return bit_get(4 * (b >> (2 * u)) + y[u - 1]) ? 1 : -1;
    return bit_get(4 * (b >> (2 * u)) + 3 + y[u - 1]) ? -1 : 1;
}
# Verdict Execution time Memory Grader output
1 Correct 1322 ms 96040 KB Output is correct - maxAccess = 10, score = 100