Submission #1199406

#TimeUsernameProblemLanguageResultExecution timeMemory
1199406SofiatpcData Transfer (IOI19_transfer)C++20
0 / 100
4 ms1724 KiB
#include "transfer.h" #include <bits/stdc++.h> using namespace std; vector<int> get_attachment(vector<int> source) { int n = source.size(), b; if(n == 63)b = 6; else b = 8; vector<int> v; for(int i = 0; i < b; i++)v.push_back(0); int tot = 0; for(int i = 1; i <= n; i++){ for(int j = 0; j < b; j++) if(i & (1<<j))v[j] ^= source[i-1]; tot ^= source[i-1]; } v.push_back(tot); return v; } vector<int> retrieve(vector<int> data) { int n,b; if(data.size() >= 255){ n = 255; b = 8; } else{ n = 63; b= 6; } vector<int> og, x; for(int i = 0; i < b; i++)x.push_back(0); int tot = 0; for(int i = 1; i <= n; i++){ for(int j = 0; j < b; j++) if(i & (1<<j))x[j] ^= data[i-1]; tot ^= data[i-1]; og.push_back(data[i-1]); } int id = 0, l = 0, qtd = 0; for(int i = 0; i < b; i++){ if(x[i] != data[n+i]){ id += (1<<i); l = i; qtd++; } } if(id != 0){ if(qtd > 1 || tot != data.back())og[id-1] ^= 1; else og[n+l] ^= 1; }else if(tot != data.back())og[og.size()-1] ^= 1; return og; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...