제출 #1163436

#제출 시각아이디문제언어결과실행 시간메모리
1163436sqrteipiData Transfer (IOI19_transfer)C++20
0 / 100
5 ms1724 KiB
#include "transfer.h"
using namespace std;

vector<int> get_attachment(vector<int> source) {
	int sum = 0, sum2 = 0;
	vector<int> attach;
	for (int i = 1; i <= source.size(); i++) {
		if (source[i]) {
			sum ^= i;
		}
	}
	for (int i = 0; i < 8; i++) attach.push_back((sum >> i) & 1), sum2 ^= attach.back();
	attach.push_back(sum2);
	return attach;
}

vector<int> retrieve(vector<int> data) {
	int n = data.size() - 9, sum = 0, sum2 = 0, sum3 = 0;
	for (int i = 1; i <= n; i++) {
		if (data[i - 1]) {
			sum ^= i;
		}
	}
	for (int i = n; i < n + 8; i++) {
		if (data[i]) {
			sum2 += 1 << (i - n);
			sum3 ^= 1;
		}
	}
	vector<int> source = data;
	for (int i = 0; i < 9; i++) source.pop_back();
	if (sum == sum2 || sum3 != data.back()) return source;
	else {
		int pos = sum ^ sum2;
		source[pos - 1] ^= 1;
		return source;
	}
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...