#include "transfer.h"
#include <bits/stdc++.h>
using namespace std;
vector<int> get_attachment(vector<int> source){
  int l = 9;
  if(source.size() == 63) l = 7;
  vector<int> ans;
  int xor_sum = 0, x = 0;
  for(int i=0; i<(int) source.size(); i++){
    if(source[i] == 1){
      xor_sum ^= (i + 1);
    }
  }
  for(int i=0; i<l-1; i++){
    if(xor_sum & (1 << i)){
      x ^= 1;
    }
  }
  ans.push_back(x);
  // cout << "xor_sum = " << xor_sum << "\n";
  for(int i=0; i<l-1; i++){
    if(xor_sum & (1 << i)){
      ans.push_back(1);
    } else ans.push_back(0);
  }
  return ans;
}
vector<int> retrieve(vector<int> data){
  // for(auto x : data) cout << x << " ";
  // cout << "\n";
  int l = 9;
  if(data.size() == 70) l = 7;
  vector<int> ans;
  int xor_sum = 0, x = 0;
  for(int i=data.size()-(l-1); i<data.size(); i++){
    if(data[i] == 1){
      xor_sum += (1 << (i - data.size() + (l - 1)));
      x ^= 1;
    }
  }
  int xor_one = 0;
  for(int i=0; i<data.size()-l; i++){
    if(data[i] == 1){
      xor_one ^= (i + 1);
    }
  }
  // cout << "xor_sum = " << xor_sum << "\n";
  // cout << "xor_one = " << xor_one << "\n";
  // cout << "x = " << x << ", data[" << data.size() - l << "] = " << data[data.size() - l] << "\n";
  if(x != data[data.size() - l]){
    for(int i=0; i<data.size()-l; i++){
      ans.push_back(data[i]);
    }
  } else{
    for(int i=0; i<data.size()-l; i++){
      if((xor_one ^ xor_sum) == (i + 1)){
        ans.push_back(1 - data[i]);
      } else ans.push_back(data[i]);
    }
  }
  // for(auto x : ans) cout << x << " ";
  // cout << "\n";
  // cout << (xor_one ^ xor_sum) << "\n";
  return ans;
}
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... |