Submission #1121139

#TimeUsernameProblemLanguageResultExecution timeMemory
1121139woohyun_jngMessage (IOI24_message)C++17
76.16 / 100
2462 ms1340 KiB
#include "message.h" #include <bits/stdc++.h> using namespace std; void send_message(vector<bool> M, vector<bool> C) { vector<bool> A(31, 0); vector<int> B, cor; int X, S = M.size(), cur = 0, cnt = 0, K = 0; for (int i = 0; i < 31; i++) { if (C[i] == 0 && C[(i + 1) % 31] == 0) { for (int j = 0; j < 5; j++) { fill(A.begin(), A.end(), i & (1 << j)); send_packet(A), K++; } X = i; break; } } for (int i = 0; i < 31; i++) { if (i == X || i == (X + 1) % 31) continue; if (C[i] == 0) cor.push_back(i); B.push_back(i); } for (int i = 0; i < 14; i++) { A[X] = !C[B[i * 2]], A[(X + 1) % 31] = !C[B[i * 2 + 1]]; for (int j = 0; j < 14 && cur + j < S; j++) A[cor[j]] = M[cur + j]; cur += 14; send_packet(A), K++; } cor.push_back(X), cor.push_back((X + 1) % 31); sort(cor.begin(), cor.end()); for (int i = 0; i < 10; i++) A[cor[i]] = (S - 1) & (1 << i); send_packet(A), K++; while (cur < S) { for (int i = 0; i < 16; i++) { if (cur + i < S) A[cor[i]] = M[cur + i]; } send_packet(A); cur += 16; } } vector<bool> receive_message(vector<vector<bool>> R) { int cnt, X = 0, Y = 0, S = 0, cur = 0; vector<int> B, cor, cor2; vector<bool> C(31, 0), res; for (int i = 4; i >= 0; i--) { cnt = 0; for (bool j : R[i]) cnt += j; X = (X << 1) | (cnt >= 16); } C[X] = C[(X + 1) % 31] = 1; for (int i = 0; i < 31; i++) { if (i == X || i == (X + 1) % 31) continue; B.push_back(i); } for (int i = 5; i < 19; i++) C[B[Y++]] = R[i][X], C[B[Y++]] = R[i][(X + 1) % 31]; Y = 0; for (int i = 0; i < 31; i++) { if (i == B[28]) continue; Y += C[i]; } if (Y == 15) C[B[28]] = 1; for (int i = 0; i < 31; i++) if (C[i]) { if (!(i == X || i == (X + 1) % 31)) cor2.push_back(i); cor.push_back(i); } for (int i = 9; i >= 0; i--) S = (S << 1) | R[19][cor[i]]; S++; cnt = 5; while (cnt < 19 && cur < S) { for (int i = 0; i < 14 && cur + i < S; i++) { res.push_back(R[cnt][cor2[i]]); } cnt++, cur += 14; } cnt = 20; while (cur < S) { for (int i = 0; i < 16 && cur + i < S; i++) res.push_back(R[cnt][cor[i]]); cnt++, cur += 16; } return res; }

Compilation message (stderr)

message.cpp: In function 'void send_message(std::vector<bool>, std::vector<bool>)':
message.cpp:9:35: warning: unused variable 'cnt' [-Wunused-variable]
    9 |     int X, S = M.size(), cur = 0, cnt = 0, K = 0;
      |                                   ^~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...