Submission #1198442

#TimeUsernameProblemLanguageResultExecution timeMemory
1198442SofiatpcData Transfer (IOI19_transfer)C++20
0 / 100
6 ms1984 KiB
#include "transfer.h"
#include <bits/stdc++.h>

using namespace std;

vector<int> get_attachment(vector<int> source) {
	source.push_back(0);
	int n = source.size(), p = 0, imp = 0;
	
	vector<int> v; 
	v.push_back(0);

	for(int i = 0; i < n; i+=2){
		p ^= source[i];
		imp ^= source[i+1];
		v.push_back(source[i]^source[i+1]);
	}
	v.push_back(p);
	v.push_back(imp);

	return v;
}

vector<int> retrieve(vector<int> data) {
	int n;
	if(data.size() >= 256)n = 256;
	else n = 64;

	vector<int> og;
	int p = 0, imp = 0, id = -1;
	for(int i = 0; i < n; i+=2){
		og.push_back(data[i]);
		og.push_back(data[i+1]);

		p ^= data[i];
		imp ^= data[i+1];
		if( (data[i]^data[i+1]) != data[n+i/2]) id = i;
	}

	if(id != -1){
		if(imp != data.back())og[id+1] ^= 1;
		else og[id] ^= 1;
	}
	og.pop_back();
	return og;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...