Submission #1221525

#TimeUsernameProblemLanguageResultExecution timeMemory
1221525nibert메시지 (IOI24_message)C++17
Compilation error
0 ms0 KiB
#include <vector>
using namespace std;

// Provided by judge
extern vector<bool> send_packet(vector<bool> pkt);
extern vector<vector<bool>> receive_packets();

// Generator matrix for (31,16) code — rows are 16 vectors of length 31
static const unsigned int GEN[16] = {
    0x7FFE0000u, 0x3FFF0000u, 0x1FFF8000u, 0x0FFFc000u,
    0x07FFE000u, 0x03FFF000u, 0x01FFF800u, 0x00FFFc00u,
    0x007FFE00u, 0x003FFF00u, 0x001FFF80u, 0x000FFFc0u,
    0x0007FFE0u, 0x0003FFF0u, 0x0001FFF8u, 0x0000FFFcu
};

void send_message(vector<bool> M, vector<bool> C_unused) {
    int L = M.size();
    int blocks = (L + 15) / 16;
    for (int b = 0; b < blocks; ++b) {
        uint32_t word = 0;
        for (int i = 0; i < 16; ++i) {
            int idx = b * 16 + i;
            word |= (idx < L && M[idx]) ? (1u << i) : 0u;
        }
        vector<bool> pkt(31);
        for (int i = 0; i < 31; ++i) {
            int bit = 0;
            for (int j = 0; j < 16; ++j) {
                if ((word >> j) & 1u) bit ^= (GEN[j] >> i) & 1u;
            }
            pkt[i] = bit;
        }
        send_packet(pkt);
    }
}

vector<bool> receive_message(vector<vector<bool>> R) {
    int blocks = R.size();
    vector<bool> out;
    out.reserve(blocks * 16);
    for (auto &pkt : R) {
        uint32_t word = 0;
        for (int bit = 0; bit < 16; ++bit) {
            int val = 0;
            for (int i = 0; i < 31; ++i) {
                if ((GEN[bit] >> i) & 1u) val ^= pkt[i];
            }
            word |= (val & 1) << bit;
        }
        for (int i = 0; i < 16; ++i)
            out.push_back((word >> i) & 1);
    }
    return out;
}

Compilation message (stderr)

message.cpp: In function 'void send_message(std::vector<bool>, std::vector<bool>)':
message.cpp:20:9: error: 'uint32_t' was not declared in this scope
   20 |         uint32_t word = 0;
      |         ^~~~~~~~
message.cpp:2:1: note: 'uint32_t' is defined in header '<cstdint>'; did you forget to '#include <cstdint>'?
    1 | #include <vector>
  +++ |+#include <cstdint>
    2 | using namespace std;
message.cpp:23:13: error: 'word' was not declared in this scope
   23 |             word |= (idx < L && M[idx]) ? (1u << i) : 0u;
      |             ^~~~
message.cpp:29:22: error: 'word' was not declared in this scope
   29 |                 if ((word >> j) & 1u) bit ^= (GEN[j] >> i) & 1u;
      |                      ^~~~
message.cpp: In function 'std::vector<bool> receive_message(std::vector<std::vector<bool> >)':
message.cpp:42:9: error: 'uint32_t' was not declared in this scope
   42 |         uint32_t word = 0;
      |         ^~~~~~~~
message.cpp:42:9: note: 'uint32_t' is defined in header '<cstdint>'; did you forget to '#include <cstdint>'?
message.cpp:48:13: error: 'word' was not declared in this scope
   48 |             word |= (val & 1) << bit;
      |             ^~~~
message.cpp:51:28: error: 'word' was not declared in this scope
   51 |             out.push_back((word >> i) & 1);
      |                            ^~~~