#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 >> 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 = 63;
vector <int> source;
for (int i = 0; i < N; ++ i)
source.push_back(data[K + 1 + i]);
int all = 0;
for (int i = 0; i < N; ++ i)
all ^= source[i];
if (all == data[K]) return source;
int flip = 0;
for (int b = 0; b < K; ++ b){
int cur = 0;
for (int i = 0; i < N; ++ i) if ((i >> b) & 1)
cur ^= data[K + 1 + i];
if (cur != data[b]) flip |= (1 << b);
}
source[flip] ^= 1;
return source;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |