| # | Time | Username | Problem | Language | Result | Execution time | Memory |
|---|---|---|---|---|---|---|---|
| 1364001 | feyza | Data Transfer (IOI19_transfer) | C++20 | 3 ms | 1724 KiB |
#include <bits/stdc++.h>
#include "transfer.h"
using namespace std;
std::vector<int> get_attachment(std::vector<int> source)
{
int n=source.size();
//cout<<"n "<<n<<endl;
int lgn;
vector<int>ans;
if(n==63)
{
ans.resize(7,0);
lgn=6;
}
else
{
ans.resize(9,0);
lgn=8;
}
for(int i=0;i<n;i++)
{
ans[0]=(ans[0]^source[i]);
for(int j=0;j<lgn;j++)
{
if(i & (1<<j))
{
ans[1+j]^=source[i];
}
}
}
/*for(int i : ans)
cout<<i;
cout<<endl;*/
return ans;
}
std::vector<int> retrieve(std::vector<int> data)
{
/*cout<<"corrupt data"<<endl;
for(int i : data)
cout<<i;
cout<<endl;*/
int n,lgn;
if(data.size()>=255)
{
n=255;
lgn=8;
}
else
{
n=63;
lgn=6;
}
vector<int>ans(n,0);
int check=0;
for(int i=0;i<n;i++)
{
ans[i]=data[i];
check^=ans[i];
}
if(data[n]==check)
return ans;
vector<int>v(lgn);
for(int i=0;i<n;i++)
{
for(int j=0;j<lgn;j++)
{
if(i & (1<<j))
{
v[j]^=data[i];
}
}
}
/*cout<<"v ";
for(int i : v)
cout<<i<<' ';
cout<<endl;*/
int pos=0;
for(int j=0;j<lgn;j++)
{
//cout<<j<<' '<<v[j]<<' '<<data[n+1+j]<<' '<<n+1+j<<endl;
if(v[j]!=data[n+1+j])
pos+=(1<<j);
}
//cout<<"pos "<<pos<<endl;
ans[pos]=1-ans[pos];
/*for(int i : ans)
cout<<i;
cout<<endl;*/
return ans;
}
Compilation message (stderr)
| # | Result | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
| # | Result | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
