Submission #1193855

#TimeUsernameProblemLanguageResultExecution timeMemory
1193855chaeryeongData Transfer (IOI19_transfer)C++20
60 / 100
77 ms1728 KiB
#include "transfer.h" #include <bits/stdc++.h> using namespace std; vector <int> get_attachment (vector <int> source) { int sum = 0; for (int i = 0; i < (int)source.size(); i++) { if (source[i] == 1) { sum += i + 1; } } vector <int> ret; if (source.size() == 63) { for (int j = 0; j < 12; j++) { ret.push_back((sum >> j) & 1); } } else { for (int j = 0; j < 16; j++) { ret.push_back((sum >> j) & 1); } } int check_sum = 0; for (auto i : ret) { check_sum ^= i; } ret.push_back(check_sum); return ret; } vector <int> retrieve (vector <int> data) { int N; if (data.size() > 200) { N = 255; } else { N = 63; } vector <int> rr; for (int i = 0; i < N; i++) { rr.push_back(data[i]); } int v = 0; for (int i = N; i + 1 < (int)data.size(); i++) { v ^= data[i]; } if (v != data.back()) return rr; int sum = 0; for (int i = N; i + 1 < (int)data.size(); i++) { sum += data[i] * (1 << (i - N)); } //sum is sum of one positions int sum2 = 0; for (int i = 0; i < N; i++) { if (rr[i] == 1) { sum2 += i + 1; } } if (sum == sum2) return rr; int x = abs(sum - sum2); rr[x - 1] ^= 1; return rr; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...