#include "transfer.h"
#include <bits/stdc++.h>
using namespace std;
vector <int> get_attachment(vector <int> source){
int N = source.size();
int K = 6;
if (N == 255) K = 8;
vector <int> data;
int all = 0;
for (int i = 0; i < N; ++ i)
all ^= source[i];
for (int b = 0; b < K; ++ b){
int cur = 0;
for (int i = 0; i < N; ++ i) if (((i + 1) >> b) & 1)
cur ^= source[i];
data.push_back(cur);
}
data.push_back(all);
return data;
}
vector <int> retrieve(vector <int> data){
int N = data.size();
int K = 6;
if (N > 255) N = 255, K = 8;
else N -= 7;
vector <int> source;
for (int i = 0; i < N; ++ i)
source.push_back(data[i]);
int all = 0;
for (int i = 0; i < N; ++ i)
all ^= data[i];
if (all == data[N]) return source;
int flip = 0;
for (int b = 0; b < K; ++ b){
int cur = 0;
for (int i = 0; i < N; ++ i) if (((i + 1) >> b) & 1)
cur ^= data[i];
if (cur != data[N + b + 1]) flip |= (1 << b);
}
if (flip) source[flip - 1] ^= 1;
return source;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |