제출 #1127175

#제출 시각아이디문제언어결과실행 시간메모리
1127175julia_08Data Transfer (IOI19_transfer)C++20
0 / 100
6 ms1724 KiB
#include "transfer.h"
#include <bits/stdc++.h>

using namespace std;

vector<int> get_attachment(vector<int> source){

  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);
      x ^= 1;
    }
  }

  ans.push_back(x);

  for(int i=0; i<8; i++){
    if(xor_sum & (1 << i)){
      ans.push_back(1);

    } else ans.push_back(0);
  }

  return ans;
}

vector<int> retrieve(vector<int> data){

  vector<int> ans;

  int xor_sum = 0, x = 0;

  for(int i=data.size()-8; i<data.size(); i++){
    if(data[i] == 1){
      xor_sum += (1 << (i - data.size() + 8));
      x ^= 1;
    }
  }

  int xor_one = 0;

  for(int i=0; i<data.size()-9; i++){
    if(data[i] == 1){
      xor_one ^= (i + 1);
    }
  }

  if(x != data[data.size() - 9]){
    for(int i=0; i<data.size()-9; i++){
      ans.push_back(data[i]);
    }

  } else{
    for(int i=0; i<data.size()-9; i++){
      if((xor_one ^ xor_sum) == i + 1){
        ans.push_back(1 - data[i]);

      } else ans.push_back(data[i]);
    }
  }

  return ans;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...