Submission #560612

#TimeUsernameProblemLanguageResultExecution timeMemory
560612MilosMilutinovicData Transfer (IOI19_transfer)C++14
88 / 100
295 ms2540 KiB
#include "transfer.h" #include <bits/stdc++.h> using namespace std; vector<int> get_attachment(vector<int> source) { int n = source.size(); vector<int> ret(9); for (int i = 0; i < n; i++) { for (int j = 0; j < 8; j++) { if ((i + 1) >> j & 1) { ret[j] ^= source[i]; } } ret[8] ^= source[i]; } return ret; } vector<int> retrieve(vector<int> data) { int n = data.size(); int f = 0; for (int i = 0; i < n - 9; i++) { f ^= data[i]; } vector<int> ans(n - 9); for (int i = 0; i < n - 9; i++) { ans[i] = data[i]; } if (f == data.back()) { return ans; } vector<int> r(8); for (int i = 0; i < n - 9; i++) { for (int j = 0; j < 8; j++) { if ((i + 1) >> j & 1) { r[j] ^= data[i]; } } } int pos = 0; for (int i = 0; i < 8; i++) { if (r[i] != data[n - 9 + i]) { pos += (1 << i); } } if (pos != 0) { pos--; ans[pos] ^= 1; } return ans; } /* 5 0 011001010110110110100111110011010111111111111000101011100101001 7 011001010110110110100111110011010111111111111000101011100101001 62 011001010110110110100111110011010111111111111000101011100101001 63 011001010110110110100111110011010111111111111000101011100101001 -1 011001010110110110100111110011010111111111111000101011100101001 */
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...