답안 #554599

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
554599 2022-04-28T21:46:39 Z urosk Data Transfer (IOI19_transfer) C++14
0 / 100
6 ms 2496 KB
#include "transfer.h"
#include <bits/stdc++.h>
#define ld double
#define ll long long
#define ull unsigned long long
#define llinf 100000000000000000LL // 10^17
#define iinf 2000000000 // 2*10^9
#define pb push_back
#define popb pop_back
#define fi first
#define sc second
#define endl '\n'
#define pii pair<int,int>
#define pll pair<ll,ll>
#define pld pair<ld,ld>
#define sz(a) int(a.size())
#define all(a) a.begin(),a.end()
#define ceri(a,l,r) {for(ll i_ = l;i_<=r;i_++) cerr<<a[i_]<< " ";cerr<<endl;}
using namespace std;

vector<int> get_attachment(vector<int> a) {
    int n = sz(a);
    int x = 0;
    vector<int> ans;
    for(int i = 0;i<n;i++){
        if(a[i]==0) x^=1;
    }
    ans.pb(x);
    x = 0;
    ll nn = n+1;
    ll d =0;
    while(nn>0){
        nn/=2;
        d++;
    }
    d--;
    for(ll i = 0;i<n;i++){
        if(a[i]==0) x^=(i+1);
    }
    //acerr<<d<<" "<<x<<endl;
    while(x>0){
        d--;
        ans.pb(x&1);
        x/=2;
    }
    while(d--) ans.pb(0);
    return ans;
}
//n 4 n/2
vector<int> retrieve(vector<int> a) {
    int m = sz(a);
    int n = 1;
    if(m==11) n = 7;
    else if(m==70) n = 63;
    else n = 255;
    //cerr<<n<<" "<<m<<endl;
    vector<int> ans;
    ll x = 0;
    for(ll i = n+2;i<sz(a);i++){
        x+=a[i]*(1<<(i-n-2));
    }
    ll y = 0;
    ll z = 0;
    for(ll i = 0;i<n;i++){
        ans.pb(a[i]);
        if(a[i]==0){
            y^=(i+1);
            z^=1;
        }
    }
    if(a[n]==z) return ans;
    if(x==y) return ans;
    x^=y;
    ans[x]^=1;
    return ans;
}
/*
1
4 010101011
*/
# 결과 실행 시간 메모리 Grader output
1 Incorrect 3 ms 644 KB WA in grader: wrong source retrieval
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 6 ms 2496 KB WA in grader: wrong source retrieval
2 Halted 0 ms 0 KB -