Submission #1322033

#TimeUsernameProblemLanguageResultExecution timeMemory
1322033adaawfcmp (balkan11_cmp)C++20
100 / 100
1163 ms99776 KiB
#include <bits/stdc++.h>
#include "cmp.h"
using namespace std;
void remember(int x) {
    int c = 0, d = 0;
    for (int i = 11; i >= 0; i--) {
        if (i % 3 == 0) bit_set((x >> i) + d);
        d += (1 << 12 - i);
    }
}
int f[15], g[15];
int compare(int x) {
    for (int i = 11; i >= 0; i--) {
        f[i] = (x >> i);
        g[i - 1] = g[i] + (1 << 12 - i);
    }
    int xx, y;
    if (bit_get(f[6] + g[6])) {
        if (bit_get(f[3] + g[3])) {
            xx = f[3] * 8 + g[0]; y = 0;
        }
        else {
            xx = f[6] * 8 + g[3]; y = 3;
        }
    }
    else {
        if (bit_get(f[9] + g[9])) {
            xx = f[9] * 8 + g[6]; y = 6;
        }
        else {
            xx = g[9];
            y = 9;
        }
    }
    int c = 0;
    for (int i = y; i < y + 3; i++) {
        if (x & (1 << i)) {
            c += (1 << i - y);
        }
    }
    if (bit_get(xx + c)) return 0;
    if (c >= 4) {
        for (int i = c + 1; i < 8; i++) {
            if (bit_get(xx + i)) return -1;
        }
        return 1;
    }
    for (int i = c - 1; i >= 0; i--) {
        if (bit_get(xx + i)) return 1;
    }
    return -1;
}

Compilation message (stderr)

cmp.cpp: In function 'int compare(int)':
cmp.cpp:15:18: warning: iteration 11 invokes undefined behavior [-Waggressive-loop-optimizations]
   15 |         g[i - 1] = g[i] + (1 << 12 - i);
      |         ~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~
cmp.cpp:13:24: note: within this loop
   13 |     for (int i = 11; i >= 0; i--) {
      |                      ~~^~~~
#Verdict Execution timeMemoryGrader output
Fetching results...