Submission #1199403

#TimeUsernameProblemLanguageResultExecution timeMemory
1199403SofiatpcData Transfer (IOI19_transfer)C++20
80 / 100
176 ms1732 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 = 12; else b = 16; vector<int> v; for(int i = 0; i < b; i++)v.push_back(0); for(int i = 1; i <= n; i++){ for(int j = 0; j < b/2; j++){ if(i & (1<<j))v[j] ^= source[i-1]; else{v[j+b/2] ^= source[i-1]; } } } return v; } vector<int> retrieve(vector<int> data) { int n,b; if(data.size() >= 255){ n = 255; b = 16; } else{ n = 63; b= 12; } vector<int> og, x; for(int i = 0; i < b; i++)x.push_back(0); for(int i = 1; i <= n; i++){ for(int j = 0; j < b/2; j++){ if(i & (1<<j))x[j] ^= data[i-1]; else{x[j+b/2] ^= data[i-1]; } } og.push_back(data[i-1]); } int id = 0, l = 0; for(int i = 0; i < b/2; i++){ if(x[i] != data[n+i]){ id += (1<<i); l = i; }else if(x[b/2+i] == data[n+b/2+i]){ id = n+i+1; break; } } if(id != 0)og[id-1] ^= 1; return og; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...