Submission #1221617

#TimeUsernameProblemLanguageResultExecution timeMemory
1221617thangdz2k7Data Transfer (IOI19_transfer)C++20
0 / 100
5 ms1728 KiB
#include "transfer.h" #include <bits/stdc++.h> using namespace std; vector <int> get_attachment(vector <int> source){ int N = source.size(); int K = 6; if (N == 255) K = 8; vector <int> data; int all = 0; for (int i = 0; i < N; ++ i) all ^= source[i]; for (int b = 0; b < K; ++ b){ int cur = 0; for (int i = 0; i < N; ++ i) if ((i >> b) & 1) cur ^= source[i]; data.push_back(cur); } data.push_back(all); return data; } vector <int> retrieve(vector <int> data){ int N = data.size(); int K = 6; if (N > 255) N = 255, K = 8; else N = 63; vector <int> source; for (int i = 0; i < N; ++ i) source.push_back(data[K + 1 + i]); int all = 0; for (int i = 0; i < N; ++ i) all ^= source[i]; if (all == data[K]) return source; int flip = 0; for (int b = 0; b < K; ++ b){ int cur = 0; for (int i = 0; i < N; ++ i) if ((i >> b) & 1) cur ^= data[K + 1 + i]; if (cur != data[b]) flip |= (1 << b); } source[flip] ^= 1; return source; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...