# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
1265278 | FernandoJC07 | Data Transfer (IOI19_transfer) | C++20 | 0 ms | 0 KiB |
vi get_attachment(vi source){
int N = source.size();
int xr = 0, s = 0;
For(i, 1, N+1){ xr ^= source[i-1]*i; s+=source[i-1];}
//cout<<xr<<endl;
vi ans = source;
int l = log2(N);
forn(i, l+1) {xr&(1<<i) ? ans.pb(1) : ans.pb(0);}
//mos(ans);
ans.pb(s%2);
return ans;
}
vi retrieve(vi data){
int N;
data.size()>255 ? N=255 : N=63;
int xr = 0, s = 0;
vi ans;
For(i, 1, N+1) { xr ^= data[i-1]*i; s+=data[i-1]; ans.pb(data[i-1]);}
int k = 0;
For(i, N, data.size()-1) k += (data[i]<<(i-N));
int puta = k^xr;
if(puta==0) return ans;
if(s%2 == data[data.size()-1]) return ans;
ans[puta-1] ^= 1;
return ans;
}