#include "transfer.h"
#include<bits/stdc++.h>
using namespace std;
vector<int> binaire(int a,int cb){
vector<int> r={};
while (cb>0){
cb--;
r.push_back(a%2);
a/=2;
}
return r;
}
vector<int> get_attachment(vector<int> source) {
int n=source.size();
int somme=0;
for (int i=0;i<n;i++){
if (source[i]==1){
somme+=i+1;
}
}
vector<int> rep=binaire(somme,(int)log2(n*n));
//cout<<(int)log2(n*n)<<endl;
int parite=0;
for (auto r:rep){
parite+=r;
}
parite%=2;
rep.push_back(parite);
/*for (auto i:rep){
cout<<i<<" ";
}
cout<<endl;*/
return rep;
}
vector<int> retrieve(vector<int> tab) {
int n;
if (tab.size()>250){
n=255;
}
else {
n=63;
}
int parite=0;
int somme=0;
int puiss=1;
for (int i=n;i<(int)tab.size()-1;i++){
parite+=tab[i];
somme+=tab[i]*puiss;
puiss*=2;
}
vector<int> rep={};
for (int i=0;i<n;i++){
rep.push_back(tab[i]);
}
if (parite%2!=tab.back()){
return rep;
}
int nouv=0;
for (int i=0;i<n;i++){
if (tab[i]==1){
nouv+=i+1;
}
}
if (nouv==somme){
return rep;
}
if (nouv>somme){
rep[nouv-somme-1]=0;
}
else {
rep[somme-nouv-1]=1;
}
/*for (int i=0;i<n;i++){
cout<<rep[i]<<" ";
}
cout<<endl;*/
return rep;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |