Submission #973175

#TimeUsernameProblemLanguageResultExecution timeMemory
973175sleepntsheepData Transfer (IOI19_transfer)C++17
88 / 100
58 ms2760 KiB
#include "transfer.h" std::vector<int> get_attachment(std::vector<int> source) { int xorsum = 0; std::vector<int> v; for (int i = 0; i < (int)source.size(); ++i) if (source[i]) xorsum ^= i + 1; for (int i = 0; i < 8; ++i) v.push_back((xorsum>>i)&1); v.push_back(__builtin_parity(xorsum)); return v; } std::vector<int> retrieve(std::vector<int> data) { int xorsum = 0; int n = (int)data.size() - 9; for (int i = 0; i < n; ++i) if (data[i]) xorsum ^= i + 1; int xordat = 0, dat_par = data.back(); for (int i = n; i < n + 8; ++i) xordat ^= (data[i]<<(i-n)); while ((int)data.size() > n) data.pop_back(); if (__builtin_parity(xordat) != dat_par) return data; int i = xorsum ^ xordat; if(i) data[i-1] ^= 1; return data; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...