QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#555793#9237. Messagealexz1205Compile Error//C++143.2kb2024-09-10 09:58:362024-09-10 09:58:36

Judging History

你现在查看的是最新测评结果

  • [2024-09-10 09:58:36]
  • 评测
  • [2024-09-10 09:58:36]
  • 提交

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) {
      |             ^~~