This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include "transfer.h"
std::vector<int> get_attachment(std::vector<int> source) {
int N = source.size();
int K;
if(N == 63)
K = 7;
else
K = 9;
std::vector<int> attach(K, 0);
for(int i = 0; i < N; ++i) {
for(int j = 0; j < K - 1; ++j)
if((1 << j) & i)
attach[j] ^= source[i];
attach[K - 1] ^= source[i];
}
return attach;
}
std::vector<int> retrieve(std::vector<int> data) {
int N, K;
if(data.size() == 70) {
N = 63;
K = 7;
} else {
N = 255;
K = 9;
}
for(int i = 0; i < N; ++i) {
for(int j = 0; j < K - 1; ++j)
if((1 << j) & i)
data[N + j] ^= data[i];
data[N + K - 1] ^= data[i];
}
int badbit = 0;
std::vector<int> rez;
for(int i = 0; i < N; ++i)
rez.push_back(data[i]);
for(int j = 0; j < (K - 1); ++j)
badbit |= (data[N + j] << j);
if(data[N + K - 1] == 1)
rez[badbit] ^= 1;
return rez;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |