QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#553805#9237. MessageA_programmerCompile Error//C++141.4kb2024-09-08 20:33:262024-09-08 20:33:26

Judging History

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

  • [2024-09-08 20:33:26]
  • 评测
  • [2024-09-08 20:33:26]
  • 提交

answer

#include "message.h"
#include <bits/stdc++.h>
using namespace std;

typedef vector<bool> vi;

vi vl[70];
int nxt[40];
bool p[40];

void send_message(vi M, vi C)
{
	M.emplace_back(1);
	while (M.size() < 1025) M.emplace_back(0);
	for (int i = 1; i <= 66; i++) vl[i].clear(), vl[i].resize(31);

	int lst, k = 0;
	for (int i = 0; i < C.size(); i++) if (!C[i]) lst = i - 31;
	for (int i = 0; i < C.size(); i++)
		if (!C[i])
		{
			int dis = i - lst;
			for (int j = 1; j < dis; j++) vl[j][i] = 1;
			for (int j = dis + 1; j <= 66; j++) vl[j][i] = M[k++];
			lst = i;
		}
	for (int i = 1; i <= 66; i++) send_packet(vl[i]);
}

vi receive_message(vector<vi> R)
{
	for (int i = 1; i <= 66; i++) vl[i] = R[i - 1];
	for (int i = 0; i < 31; i++)
	{
		int pos = 1;
		while (pos <= 66 && vl[pos][i]) pos++;
		nxt[i] = (i + 31 - pos % 31) % 31;
	}
	for (int i = 0; i < 31; i++)
	{
		int x = i, Fl = 0;
		for (int j = 1; j <= 16; j++)
		{
			x = nxt[x];
			if (x == i)
			{
				if (j == 16) Fl = 1;
				else { Fl = -1; break; }
			}
		}
		if (Fl == 1)
		{
			x = i;
			for (int j = 1; j <= 16; j++) x = nxt[x], p[x] = 1;
			break;
		}
	}

	vi res; res.clear();
	for (int i = 0; i < 31; i++)
		if (p[i])
		{
			int pos = 1;
			while (pos <= 66 && vl[pos][i]) pos++;
			for (int j = pos + 1; j <= 66; j++) res.emplace_back(vl[j][i]);
		}
	while (!res.back()) res.pop_back();
	res.pop_back(); return res;
}

Details

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