제출 #1265288

#제출 시각아이디문제언어결과실행 시간메모리
1265288FernandoJC07Data Transfer (IOI19_transfer)C++20
100 / 100
60 ms1728 KiB
#include <bits/stdc++.h> #include "transfer.h" #define vi vector<int> #define vii vector<vi> #define pb push_back #define ff first #define ss second #define pii pair<int, int> #define vpii vector<pii> #define forn(i, n) for(int i = 0; i<n; ++i) #define For(i, a, n) for(int i = a; i<n; ++i) using namespace std; vi get_attachment(vi source){ int N = source.size(); int xr = 0, s = 0; For(i, 1, N+1){ xr ^= source[i-1]*i; s+=source[i-1];} //cout<<xr<<endl; vi ans; int l = log2(N); forn(i, l+1) {xr&(1<<i) ? ans.pb(1) : ans.pb(0);} //mos(ans); ans.pb(s%2); return ans; } vi retrieve(vi data){ int N; data.size()>255 ? N=255 : N=63; int xr = 0, s = 0; vi ans; For(i, 1, N+1) { xr ^= data[i-1]*i; s+=data[i-1]; ans.pb(data[i-1]);} int k = 0; For(i, N, data.size()-1) k += (data[i]<<(i-N)); int puta = k^xr; if(puta==0) return ans; if(s%2 == data[data.size()-1]) return ans; ans[puta-1] ^= 1; return ans; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...