QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#555793 | #9237. Message | alexz1205 | Compile Error | / | / | C++14 | 3.2kb | 2024-09-10 09:58:36 | 2024-09-10 09:58:36 |
Judging History
answer
#include <bits/stdc++.h>
#include "message.h"
using namespace std;
int arr[31];
namespace help{
int message[31][66];
}
void send_message(std::vector<bool> M, std::vector<bool> C) {
std::vector<bool> A(31, 0);
send_packet(A);
int p = -1;
int f = -1;
memset(arr, 0, sizeof(int) * 31);
memset(help::message, -1, sizeof(int) * 31*66);
for (int x = 0; x < 31; x ++){
if (!C[x]){
if (f == -1){
p = x;
f = x;
}else {
arr[p] = x-p;
p = x;
}
}
}
arr[p] = 31+f - p;
int num = 0;
for (int x = 0; x < 31; x ++){
if (!C[x]){
// do elias omega coding
vector<int> res;
res.push_back(0);
int v = arr[x];
while (v != 1){
res.push_back(v);
v = 31-__builtin_clz(v);
}
reverse(res.begin(), res.end());
int ind = 0;
for (int x: res){
if (x == 0){
help::message[x][ind++] = 0;
}else {
for (int i = 0; i < 32-__builtin_clz(x); x ++){
help::message[x][ind++] = (bool)(x & (1 << i));
}
}
}
}
}
vector<array<int, 2>> sizeW;
int ind = 0;
int pack = 0;
for (int y = 0; y < 66; y ++){
if (C[x]) continue;
for (int x = 0; x < 31; x ++){
if (help::message[x][y] != -1){
pack = x;
continue;
}
if (sizeW.size() < 10){
sizeW.push_back({x, y});
help::message[x][y] = -2;
}else if (ind < (int)M.size()){
help::message[x][y] = M[ind++];
pack = x;
}
}
}
assert(ind == (int)M.size());
for (int x = 0; x < 10; x ++){
help::message[sizeW[x][0]][sizeW[x][1]] = (bool)((M.size()-1) & (1 << x));
}
for (int y = 0; y < pack; y ++){
vector<bool> res;
for (int x = 0; x < 31; x ++){
res.push_back((bool)help::message[x][y]);
}
send_packet(res);
}
}
int decodeElias(int i){
int N = 1;
int ind = 0;
while (message[i][ind] != 0){
int v = 0;
for (int x = 0; x <= N; x ++){
int val = message[i][ind];
message[i][ind ++] = -2;
v += val << x;
}
N = v;
if (ind >= 12){
return 0;
}
}
message[i][ind ++] = -2;
return N;
}
namespace check{
int good[31];
int time[31];
void dfs(int i, int t = 1){
if (good[i] != 0){
return;
}
if (time[i] != 0){
if (t - time[i] == 16){
good[i] = 1;
dfs((arr[i] + i) % 31, t+1);
return;
}else {
good[i] = -1;
return;
}
}
time[i] = t;
dfs((arr[i] + i) % 31, t+1);
}
std::vector<bool> receive_message(std::vector<std::vector<bool>> R) {
memset(arr, 0, sizeof(int) * 31);
memset(good, 0, sizeof(int) * 31);
memset(help::message, -1, sizeof(int) * 31*66);
for (int y = 0; y < R.size(); y ++){
for (int x = 0; x < 31; x ++){
help::mesage[x][y] = R[y][x];
}
}
for (int x = 0; x < 31; x ++){
arr[x] = decodElias(x);
}
for (int x = 0; x < 31; x ++){
if (good[x] != 0){
continue;
}
dfs(x);
}
int totLen = 0;
int i = 0;
vector<bool> res;
for (int y = 0; y < R.size(); y ++){
for (int x = 0; x < 31; x ++){
if (good[x] == 1){
if (message[x][y] == -2){
continue;
}
if (i < 10){
totLen += (int)message[x][y] << (i ++);
}else if (res.size() < totLen){
res.push_back(message[x][y]);
}
}
}
}
return res;
}
详细
answer.code: In function ‘void send_message(std::vector<bool>, std::vector<bool>)’: answer.code:58:23: error: ‘x’ was not declared in this scope 58 | if (C[x]) continue; | ^ answer.code: In function ‘int decodeElias(int)’: answer.code:89:16: error: ‘message’ was not declared in this scope; did you mean ‘help::message’? 89 | while (message[i][ind] != 0){ | ^~~~~~~ | help::message answer.code:8:13: note: ‘help::message’ declared here 8 | int message[31][66]; | ^~~~~~~ answer.code:101:9: error: ‘message’ was not declared in this scope; did you mean ‘help::message’? 101 | message[i][ind ++] = -2; | ^~~~~~~ | help::message answer.code:8:13: note: ‘help::message’ declared here 8 | int message[31][66]; | ^~~~~~~ answer.code: In function ‘std::vector<bool> check::receive_message(std::vector<std::vector<bool> >)’: answer.code:134:31: error: ‘mesage’ is not a member of ‘help’; did you mean ‘message’? 134 | help::mesage[x][y] = R[y][x]; | ^~~~~~ | message answer.code:138:26: error: ‘decodElias’ was not declared in this scope; did you mean ‘decodeElias’? 138 | arr[x] = decodElias(x); | ^~~~~~~~~~ | decodeElias answer.code:154:37: error: ‘message’ was not declared in this scope; did you mean ‘help::message’? 154 | if (message[x][y] == -2){ | ^~~~~~~ | help::message answer.code:8:13: note: ‘help::message’ declared here 8 | int message[31][66]; | ^~~~~~~ answer.code:158:56: error: ‘message’ was not declared in this scope; did you mean ‘help::message’? 158 | totLen += (int)message[x][y] << (i ++); | ^~~~~~~ | help::message answer.code:8:13: note: ‘help::message’ declared here 8 | int message[31][66]; | ^~~~~~~ answer.code:160:55: error: ‘message’ was not declared in this scope; did you mean ‘help::message’? 160 | res.push_back(message[x][y]); | ^~~~~~~ | help::message answer.code:8:13: note: ‘help::message’ declared here 8 | int message[31][66]; | ^~~~~~~ answer.code: At global scope: answer.code:167:2: error: expected ‘}’ at end of input 167 | } | ^ answer.code:105:16: note: to match this ‘{’ 105 | namespace check{ | ^ stub.cpp: In function ‘int {anonymous}::sz(const C&)’: stub.cpp:27:52: error: ‘size’ is not a member of ‘std’; did you mean ‘size_t’? 27 | template<class C> int sz(const C& c) { return std::size(c); } | ^~~~ | size_t stub.cpp: In function ‘void {anonymous}::write_int_array(const int*, int)’: stub.cpp:70:13: warning: init-statement in selection statements only available with ‘-std=c++17’ or ‘-std=gnu++17’ 70 | if (int ret = fwrite(arr, sizeof(int), len, fout); len != ret) { | ^~~ stub.cpp: In function ‘void {anonymous}::read_int_array(int*, int)’: stub.cpp:105:13: warning: init-statement in selection statements only available with ‘-std=c++17’ or ‘-std=gnu++17’ 105 | if (int ret = fread(arr, sizeof(int), len, fin); len != ret) { | ^~~