제출 #1200054

#제출 시각아이디문제언어결과실행 시간메모리
1200054JungPSData Transfer (IOI19_transfer)C++20
100 / 100
50 ms1728 KiB
#include "transfer.h" #include<iostream> using namespace std; vector<int> get_attachment(vector<int> source) { int n,ck; if(source.size()==255) n=255,ck=8; else n=63,ck=6; vector<int> ss={}; for(int i=0;i<ck;++i){ int tmp=0; for(int cur=(1<<i);cur<=source.size();cur+=(1<<(i+1))){ for(int j=0;j<(1<<i);++j){ //cout << cur+j-1 << " "; tmp+=source[cur+j-1]; } } //cout << endl; ss.push_back(tmp%2); } int tmp=0; for(int i=0;i<ss.size();++i) tmp+=ss[i]; //for(auto i:ss) cout << i << " " ; //cout << " @ "; ss.push_back(tmp%2); return ss; } std::vector<int> retrieve(std::vector<int> data) { int ans=0; int n,ck; if(data.size()>=255) n=255,ck=8; else n=63,ck=6; for(int i=0;i<ck;++i){ int tmp=0; for(int cur=(1<<i);cur<=n;cur+=(1<<(i+1))){ for(int j=0;j<(1<<i);++j){ tmp+=data[cur+j-1]; } } if(data[n+i]!=tmp%2){ ans+=(1<<i); //cout << i << " "; } } //cout << "ANS = " << ans-1 << endl; int tmp=0; for(int i=n;i<data.size()-1;++i) tmp+=data[i]; if(tmp%2==data[n+ck] && ans-1!=-1){ data[ans-1]=1-data[ans-1]; } return std::vector<int>(data.begin(), data.end()-ck-1); }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...