Submission #1266922

#TimeUsernameProblemLanguageResultExecution timeMemory
1266922haithamcoderData Transfer (IOI19_transfer)C++20
0 / 100
7 ms3260 KiB
#include "transfer.h" typedef int ll; #include<bits/stdc++.h> using namespace std; 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 timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...