Submission #307953

#TimeUsernameProblemLanguageResultExecution timeMemory
307953urd05Data Transfer (IOI19_transfer)C++14
0 / 100
7 ms2668 KiB
#include "transfer.h" #include <bits/stdc++.h> using namespace std; vector<int> get_attachment(vector<int> source) { int n=source.size(); int val=0; int x=0; for(int i=0;i<n;i++) { if (source[i]==1) { val+=i+1; val%=2*(n+1); x^=1; } } vector<int> ret; if (n==63) { for(int i=0;i<7;i++) { ret.push_back((val%2)^x); val/=2; } } else { for(int i=0;i<9;i++) { ret.push_back((val%2)^x); val/=2; } } return ret; } vector<int> retrieve(vector<int> data) { vector<int> ret; if (data.size()==70) { int x=0; for(int i=0;i<70;i++) { x^=data[i]; } if (x==1) { for(int i=0;i<63;i++) { ret.push_back(data[i]); } return ret; } x=0; for(int i=0;i<63;i++) { x^=data[i]; } if (x==0) { for(int i=63;i<70;i++) { data[i]^=1; } } int xval=0; for(int i=63;i<70;i++) { xval+=(data[i]<<(i-63)); } int pos=-1; int val=0; for(int i=0;i<63;i++) { if (data[i]==1) { val+=i+1; val%=128; } } for(int i=0;i<63;i++) { if (data[i]==0) { if ((val+i+1)%128==xval) { pos=i; break; } } else { if ((xval+i+1)%128==val) { pos=i; break; } } } for(int i=0;i<63;i++) { ret.push_back(data[i]^(pos==i)); } } else { int x=0; for(int i=0;i<264;i++) { x^=data[i]; } if (x==1) { for(int i=0;i<255;i++) { ret.push_back(data[i]); } return ret; } x=0; for(int i=0;i<255;i++) { x^=data[i]; } if (x==0) { for(int i=255;i<264;i++) { data[i]^=1; } } int xval=0; for(int i=255;i<264;i++) { xval+=(data[i]<<(i-255)); } int pos=-1; int val=0; for(int i=0;i<255;i++) { if (data[i]==1) { val+=i+1; val%=512; } } for(int i=0;i<255;i++) { if (data[i]==0) { if ((val+i+1)%512==xval) { pos=i; break; } } else { if ((xval+i+1)%512==val) { pos=i; break; } } } for(int i=0;i<255;i++) { ret.push_back(data[i]^(pos==i)); } } return ret; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...