# include <iostream>
# include <vector>
using namespace std;
# include "transfer.h"
//# include "grader.cpp"
const int n=127,LOG=8;
std::vector<int> get_attachment(std::vector<int> source)
{
for(int i=0;i<=LOG;i++) source.push_back(0);
for(int j=0;j<LOG;j++)
{
for(int i=1;i<=n;i++)
{
if((i&(1<<j))>0) source[n+j]^=source[i-1];
}
}
for(int i=0;i<n;i++) source[n+LOG]^=source[i];
vector<int> data;
for(int i=0;i<=LOG;i++) data.push_back(source[n+i]);
return data;
}
std::vector<int> retrieve(std::vector<int> data)
{
vector<int> ans;
for(int i=0;i<n;i++) ans.push_back(data[i]);
int all=0;
for(int i=0;i<n;i++) all^=data[i];
if(all==data[n+LOG]) return ans;
int corr=0;
for(int j=0;j<LOG;j++)
{
int x=0;
for(int i=1;i<=n;i++)
{
if((i&(1<<j))>0) x^=data[i-1];
}
if(x!=data[n+j]) corr|=(1<<j);
}
//cout<<corr<<"\n";
if(corr==0) return ans;
else
{
ans[corr-1]^=1;
return ans;
}
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |