Submission #1264700

#TimeUsernameProblemLanguageResultExecution timeMemory
1264700FernandoJC07Data Transfer (IOI19_transfer)C++20
0 / 100
6 ms3256 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];}
    vi ans = source;
    int l = log2(N);
    forn(i, l+1) ans.pb(xr&(1<<i)>0);
    ans.pb(s&1);
    return ans;
}

vi retrieve(vi data){
    int N;
    For(i, 1, 260) {
        int u = i+log2(i)+2;
        if(u==data.size()) N=i;
    }
    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...