| # | Time | Username | Problem | Language | Result | Execution time | Memory |
|---|---|---|---|---|---|---|---|
| 1363800 | simona1230 | Data Transfer (IOI19_transfer) | C++20 | 108 ms | 1724 KiB |
#include "transfer.h"
#include <bits/stdc++.h>
using namespace std;
int pw,n;
std::vector<int> get_attachment(std::vector<int> source)
{
n=source.size();
if(n==63)pw=6;
else pw=8;
vector<int> r;
for(int b=0;b<pw;b++)
{
int x=0;
for(int i=0;i<n;i++)
{
if((i+1)&(1<<b))
{
x=x^source[i];
}
}
r.push_back(x);
}
int all=0;
for(int i=0;i<n;i++)
all^=source[i];
r.push_back(all);
/*for(int i=0;i<r.size();i++)
cout<<r[i]<<" ";
cout<<endl;
cout<<r.size()<<endl;*/
return r;
}
std::vector<int> retrieve(std::vector<int> data)
{
vector<int> ans;
n=data.size();
//cout<<data.size()<<endl;
if(n==70)n=63,pw=6;
else n=255,pw=8;
vector<int> h;
for(int b=0;b<pw;b++)
{
int x=0;
for(int i=0;i<n;i++)
{
if((i+1)&(1<<b))
{
x=x^data[i];
}
}
h.push_back(x);
}
int all=0;
for(int i=0;i<n;i++)
all^=data[i];
h.push_back(all);
vector<int> v;
int diff=0;
for(int i=0;i<h.size()-1;i++)
{
if(h[i]!=data[i+n])
{
diff+=(1<<i);
//cout<<i<<endl;
v.push_back(i);
}
}
if(v.size()>1||v.size()==1&&h[h.size()-1]!=data[data.size()-1])
{
data[diff-1]^=1;
//cout<<"> "<<diff-1<<endl;
}
for(int i=0;i<n;i++)
{
ans.push_back(data[i]);
//cout<<ans[i];
}
///cout<<endl;
return ans;
}
/*
1
4 000010000111100000000011110000000000000000000000000110000000000
8 000000000000111100000000000000000001100000000000100000000000000
16 000000000000000000000000000000000000000000000000000000000001111
32 000000000000000100000000000000000000000001110000001100000000000
64 000000000000000000000000000000000000000000000000000000000000000
*/
Compilation message (stderr)
| # | Result | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
| # | Result | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
