# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
1280562 | enzy | Data Transfer (IOI19_transfer) | C++20 | 8 ms | 3252 KiB |
#include "transfer.h"
#include<bits/stdc++.h>
using namespace std;
vector<int> get_attachment(vector<int> source){
vector<int>v;
for(int x : source) v.push_back(x);
int n=source.size();
int qtd=__lg(n+1);
int x=0;
for(int i=0;i<n;i++) if(source[i]) x^=i;
int par=0;
for(int k=qtd-1;k>=0;k--){
if(x&(1<<k)){
v.push_back(1);
par^=1;
}
else v.push_back(0);
}
v.push_back(par);
return v;
}
vector<int> retrieve(vector<int> data){
vector<int>v;
int N=data.size(), n;
int par=data.back();
data.pop_back();
for(int x : data) v.push_back(x);
if(N==70) n=63;
else n=255;
int k=0, x=0, atp=0;
while(v.size()>n){
if(v.back()){
x+=(1<<k);
atp^=1;
}
k++;
v.pop_back();
}
if(atp!=par) return v;
int atx=0;
for(int i=0;i<n;i++) if(v[i]) atx^=i;
int mudar=x^atx;
if(mudar) v[mudar]^=1;
return v;
}
Compilation message (stderr)
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |