제출 #1333020

#제출 시각아이디문제언어결과실행 시간메모리
1333020why_notData Transfer (IOI19_transfer)C++20
15 / 100
118 ms1980 KiB
#include "transfer.h"
using namespace std;

std::vector<int> get_attachment(std::vector<int> source) {
	vector<int> reponse;
	reponse.push_back(0);
	source.push_back(0);
	for (int i = 0; i < source.size(); i += 4) {
		//cout << i << "\n";
		int a = source[i];
		int b = source[i + 1];
		int c = source[i + 2];
		int d = source[i + 3];
		int p = (a + b + d) % 2;
		int q = (a + c + d) % 2;
		int r = (b + c + d) % 2;
		reponse.push_back(p);
		reponse.push_back(q);
		reponse.push_back(r);
	}
	return reponse;
}

std::vector<int> retrieve(std::vector<int> data) {
	vector<int> reponse;
	for (int i = 0; i < (data.size() / 7 * 4); i += 4) {
		int a = data[i];
		int b = data[i + 1];
		int c = data[i + 2];
		int d = data[i + 3];
		int p = (a + b + d) % 2;
		int q = (a + c + d) % 2;
		int r = (b + c + d) % 2;
		reponse.push_back(p);
		reponse.push_back(q);
		reponse.push_back(r);
	}

	vector<int> codeCorrige;

	for (int i = 0; i < reponse.size(); i += 3) {
		int j = ((data.size()+1) / 7 * 4) + i;
		int p = data[j];
		int q = data[j + 1];
		int r = data[j + 2];
		int x = reponse[i];
		int y = reponse[i + 1];
		int z = reponse[i + 2];

		bool w5 = (p == x), w6 = (q == y), w7 = (r == z);
		if (w5 && w6 && w7) {
			//Tout est bon
			codeCorrige.push_back(data[i / 3 * 4]);
			codeCorrige.push_back(data[i / 3 * 4 + 1]);
			codeCorrige.push_back(data[i / 3 * 4 + 2]);
			codeCorrige.push_back(data[i / 3 * 4 + 3]);
		}
		else if (w5 && w6 && !w7) {
			//Tous les bits de donnnées sont corrects
			codeCorrige.push_back(data[i / 3 * 4]);
			codeCorrige.push_back(data[i / 3 * 4 + 1]);
			codeCorrige.push_back(data[i / 3 * 4 + 2]);
			codeCorrige.push_back(data[i / 3 * 4 + 3]);
		}
		else if (w5 && !w6 && w7) {
			//Tous les bits de donnnées sont corrects
			codeCorrige.push_back(data[i / 3 * 4]);
			codeCorrige.push_back(data[i / 3 * 4 + 1]);
			codeCorrige.push_back(data[i / 3 * 4 + 2]);
			codeCorrige.push_back(data[i / 3 * 4 + 3]);
		}
		else if (w5 && !w6 && !w7) {
			//Le bit c est faux
			codeCorrige.push_back(data[i / 3 * 4]);
			codeCorrige.push_back(data[i / 3 * 4 + 1]);
			codeCorrige.push_back(!data[i / 3 * 4 + 2]);
			codeCorrige.push_back(data[i / 3 * 4 + 3]);
		}
		else if (!w5 && w6 && w7) {
			//Tous les bits de donnnées sont corrects
			codeCorrige.push_back(data[i / 3 * 4]);
			codeCorrige.push_back(data[i / 3 * 4 + 1]);
			codeCorrige.push_back(data[i / 3 * 4 + 2]);
			codeCorrige.push_back(data[i / 3 * 4 + 3]);
		}
		else if (!w5 && w6 && !w7) {
			//Le bit b est faux
			codeCorrige.push_back(data[i / 3 * 4]);
			codeCorrige.push_back(!data[i / 3 * 4 + 1]);
			codeCorrige.push_back(data[i / 3 * 4 + 2]);
			codeCorrige.push_back(data[i / 3 * 4 + 3]);
		}
		else if (!w5 && !w6 && w7) {
			//Le bit a est faux
			codeCorrige.push_back(!data[i / 3 * 4]);
			codeCorrige.push_back(data[i / 3 * 4 + 1]);
			codeCorrige.push_back(data[i / 3 * 4 + 2]);
			codeCorrige.push_back(data[i / 3 * 4 + 3]);
		}
		else  {
			//Le bit d est faux
			codeCorrige.push_back(data[i / 3 * 4]);
			codeCorrige.push_back(data[i / 3 * 4 + 1]);
			codeCorrige.push_back(data[i / 3 * 4 + 2]);
			codeCorrige.push_back(!data[i / 3 * 4 + 3]);
		}
	}
	codeCorrige.pop_back();

	return codeCorrige;
}

컴파일 시 표준 에러 (stderr) 메시지

grader.cpp: In instantiation of 'void shuffle(std::vector<T>&) [with T = Scenario]':
grader.cpp:200:10:   required from here
grader.cpp:28:23: warning: 'void std::random_shuffle(_RAIter, _RAIter) [with _RAIter = __gnu_cxx::__normal_iterator<Scenario*, vector<Scenario> >]' is deprecated: use 'std::shuffle' instead [-Wdeprecated-declarations]
   28 |         random_shuffle(v.begin(), v.end());
      |         ~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~
In file included from /usr/include/c++/13/algorithm:61,
                 from grader.cpp:8:
/usr/include/c++/13/bits/stl_algo.h:4581:5: note: declared here
 4581 |     random_shuffle(_RandomAccessIterator __first, _RandomAccessIterator __last)
      |     ^~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...