#include"transfer.h"
#include<bits/stdc++.h>
using namespace std;
typedef int ll;
std::vector<int> get_attachment(std::vector<int> source) {
ll n = source.size();
ll cnt[] = {0, 0};
for (auto x : source) {
cnt[x]++;
}
ll msb = 31 - __builtin_clz(n);
vector<ll> res(n + msb + 1);
ll t = n;
for (ll i = msb; i >= 0; i--) {
if ((1 << i) <= t) {
t -= (1 << i);
res[msb - i] = 1;
}
}
for (ll i = 0; i < n; i++) {
res[i + msb + 1] = source[i];
}
return res;
}
std::vector<int> retrieve(std::vector<int> data) {
ll n;
if (data.size() <= 255) n = 63;
else n = 255;
vector<ll> res(n);
ll cnt[] = {0, 0};
for (ll i = 0; i < n; i++) {
cnt[data[i]]++;
res[i] = data[i];
}
ll count = 0;
ll msb = 31 - __builtin_clz(n);
for (ll i = 0; i <= msb; i++) {
if (data[n + i]) {
count += (1 << (msb - i));
}
}
vector<ll> rev(n);
for (ll i = 0; i < n; i++) {
rev[i] = data[n + msb + 1 + i];
}
if (count == cnt[1]) return res;
else return rev;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |