#include<bits/stdc++.h>
#include "transfer.h"
using namespace std;
vector<int> get_attachment(vector<int> source){
if(source.size()==63){
vector<int> ans; ans.assign(7, 0); for(int i = 0; i < 7; i++) ans[i]=0;
for(int i = 0; i < 63; i++){
for(int j = 0; j < 6; j++){
if(i&(1<<j)){
ans[j]=(ans[j]+source[i])%2;
}
}
}
for(int i = 0; i < 6; i++) ans[6]=(ans[6]+ans[i])%2;
return ans;
}
else{
vector<int> ans; ans.assign(9, 0); for(int i = 0; i < 9; i++) ans[i]=0;
for(int i = 0; i < 255; i++){
for(int j = 0; j < 8; j++){
if(i&(1<<j)){
ans[j]=(ans[j]+source[i])%2;
}
}
}
for(int i = 0; i < 8; i++) ans[8]=(ans[8]+ans[i])%2;
return ans;
}
}
vector<int> retrieve(vector<int> data){
if(data.size()==70){
int check = 0; for(int i = 63; i < 69; i++) check=(check+data[i])%2;
if(check!=data[69]){
vector<int> final; final.assign(63, 0); for(int i = 0; i < 63; i++) final[i]=data[i];
return final;
}
else{
int arr[6]; for(int i = 0; i < 6; i++) arr[i]=0;
for(int i = 0; i < 63; i++){
for(int j = 0; j < 6; j++){
if(i&(1<<j)) arr[j]=(arr[j]+data[i])%2;
}
}
bool c = true; for(int i = 0; i < 6; i++) if(arr[i]!=data[63+i]) c = false;
if(c){
vector<int> final; final.assign(63, 0); for(int i = 0; i < 63; i++) final[i]=data[i];
return final;
}
else{
int error = 0;
for(int i = 0; i < 6; i++){
if(arr[i]!=data[63+i]) error+=(1<<i);
}
data[error]=1-data[error];
vector<int> final; final.assign(63, 0); for(int i = 0; i < 63; i++) final[i]=data[i];
return final;
}
}
}
else{
int check = 0; for(int i = 255; i < 263; i++) check=(check+data[i])%2;
if(check!=data[263]){
vector<int> final; final.assign(255, 0); for(int i = 0; i < 255; i++) final[i]=data[i];
return final;
}
else{
int arr[8]; for(int i = 0; i < 8; i++) arr[i]=0;
for(int i = 0; i < 255; i++){
for(int j = 0; j < 8; j++){
if(i&(1<<j)) arr[j]=(arr[j]+data[i])%2;
}
}
bool c = true; for(int i = 0; i < 8; i++) if(arr[i]!=data[255+i]) c = false;
if(c){
vector<int> final; final.assign(255, 0); for(int i = 0; i < 255; i++) final[i]=data[i];
return final;
}
else{
int error = 0;
for(int i = 0; i < 8; i++){
if(arr[i]!=data[255+i]) error+=(1<<i);
}
data[error]=1-data[error];
vector<int> final; final.assign(255, 0); for(int i = 0; i < 255; i++) final[i]=data[i];
return final;
}
}
}
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |