#include "transfer.h"
#include <bits/stdc++.h>
using namespace std;
std::vector<int> get_attachment(std::vector<int> source)
{
int K,N=source.size(),ans=0,br=0;
vector<int> ansV;
//K=3;
//if(false)
if(N==63)K=6;
else K=8;
for(int i=0;i<N;i++)
{
if(source[i])ans^=(i+1);
}
for(int i=0;i<K;i++)
{
if(ans&(1LL<<i))
{
ansV.push_back(1);
br++;
}
else
{
ansV.push_back(0);
}
}
ansV.push_back(br%2);
//for(auto i:ansV)cout<<i;
//cout<<endl;
return ansV;
}
std::vector<int> retrieve(std::vector<int> data)
{
int N,K,br=0,ans=0;
vector<int> ansV;
//cout<<" ";
//for(auto i:data)cout<<i;
//cout<<endl;
//N=7;
//K=3;
//if(false)
if(data.size()==70)
{
N=63;
K=6;
}
else
{
N=255;
K=8;
}
for(int i=N;i<N+K;i++)br+=data[i];
if(br%2!=data[N+K])
{
for(int i=0;i<N;i++)ansV.push_back(data[i]);
return ansV;
}
for(int i=N;i<N+K;i++)
{
ans+=data[i]*(1LL<<(i-N));
}
//cout<<ans<<endl;
for(int i=0;i<N;i++)
{
if(data[i])ans^=(i+1);
}
if(ans!=0)
{
data[ans-1]=1-data[ans-1];
}
for(int i=0;i<N;i++)ansV.push_back(data[i]);
return ansV;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |