Submission #1233454

#TimeUsernameProblemLanguageResultExecution timeMemory
1233454badge881Data Transfer (IOI19_transfer)C++20
60 / 100
5 ms1728 KiB
#include "transfer.h" #include <bits/stdc++.h> using namespace std; vector<int> get_attachment(vector<int> source) { int xr = 0, cnt = 0; for (int i = 0; i < source.size(); i++) if (source[i] == 0) xr ^= (i + 1), cnt++; vector<int> control; for (int i = 5; i >= 0; i--) if (xr & (1 << i)) control.push_back(1); else control.push_back(0); control.push_back(cnt % 2); return control; } vector<int> retrieve(vector<int> data) { int xr = 0, cnt = 0; for (int i = 0; i < data.size() - 7; i++) if (data[i] == 0) xr ^= (i + 1), cnt++; vector<int> ans; for (int i = 0; i < data.size() - 7; i++) ans.push_back(data[i]); int parity = data[data.size() - 1], reported_xor = 0; for (int i = data.size() - 7; i < data.size() - 1; i++) reported_xor = (2 * reported_xor) + data[i]; if (xr == reported_xor || cnt % 2 == parity) return ans; ans[(xr ^ reported_xor) - 1] = 1 - ans[(xr ^ reported_xor) - 1]; return ans; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...