제출 #1266992

#제출 시각아이디문제언어결과실행 시간메모리
1266992axleofapulleyData Transfer (IOI19_transfer)C++20
0 / 100
6 ms1728 KiB
#include<bits/stdc++.h> #include "transfer.h" using namespace std; vector<int> get_attachment(vector<int> source){ if(source.size()==63){ vector<int> ans; ans.assign(7, 0); for(int i = 0; i < 7; i++) ans[i]=0; for(int i = 0; i < 63; i++){ for(int j = 0; j < 6; j++){ if(i&(1<<j)){ ans[j]=(ans[j]+source[i])%2; } } } for(int i = 0; i < 6; i++) ans[6]=(ans[6]+ans[i])%2; return ans; } else{ vector<int> ans; ans.assign(9, 0); for(int i = 0; i < 9; i++) ans[i]=0; for(int i = 0; i < 255; i++){ for(int j = 0; j < 8; j++){ if(i&(1<<j)){ ans[j]=(ans[j]+source[i])%2; } } } for(int i = 0; i < 8; i++) ans[8]=(ans[8]+ans[i])%2; return ans; } } vector<int> retrieve(vector<int> data){ if(data.size()==70){ int check = 0; for(int i = 63; i < 69; i++) check=(check+data[i])%2; if(check!=data[69]){ vector<int> final; final.assign(63, 0); for(int i = 0; i < 63; i++) final[i]=data[i]; return final; } else{ int arr[6]; for(int i = 0; i < 6; i++) arr[i]=0; for(int i = 0; i < 63; i++){ for(int j = 0; j < 6; j++){ if(i&(1<<j)) arr[j]=(arr[j]+data[i])%2; } } bool c = true; for(int i = 0; i < 6; i++) if(arr[i]!=data[63+i]) c = false; if(c){ vector<int> final; final.assign(63, 0); for(int i = 0; i < 63; i++) final[i]=data[i]; return final; } else{ int error = 0; for(int i = 0; i < 6; i++){ if(arr[i]!=data[63+i]) error+=(1<<i); } data[error]=1-data[error]; vector<int> final; final.assign(63, 0); for(int i = 0; i < 63; i++) final[i]=data[i]; return final; } } } else{ int check = 0; for(int i = 255; i < 263; i++) check=(check+data[i])%2; if(check!=data[263]){ vector<int> final; final.assign(255, 0); for(int i = 0; i < 255; i++) final[i]=data[i]; return final; } else{ int arr[8]; for(int i = 0; i < 8; i++) arr[i]=0; for(int i = 0; i < 255; i++){ for(int j = 0; j < 8; j++){ if(i&(1<<j)) arr[j]=(arr[j]+data[i])%2; } } bool c = true; for(int i = 0; i < 8; i++) if(arr[i]!=data[255+i]) c = false; if(c){ vector<int> final; final.assign(255, 0); for(int i = 0; i < 255; i++) final[i]=data[i]; return final; } else{ int error = 0; for(int i = 0; i < 8; i++){ if(arr[i]!=data[255+i]) error+=(1<<i); } data[error]=1-data[error]; vector<int> final; final.assign(255, 0); for(int i = 0; i < 255; i++) final[i]=data[i]; return final; } } } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...