#include <bits/stdc++.h>
using namespace std;
#define pp pair <int, int>
#define fi first
#define se second
#define yes cout << "YES\n"
#define no cout << "NO\n"
const int N = 1e6 + 9;
int n, a[N];
vector <int> get_attachment (vector <int> source){
int sz = 8;
if (source.size () > 63) sz = 16;
vector <vector <int>> board (sz, vector <int> (sz, 0));
int i = 0, j = 0, idx = 0;
while (idx < source.size ()){
board[i][j] = source[idx];
j++;
if (j >= sz){
i++; j = 0;
}
idx++;
}
vector <int> result;
for (int i = 0; i < sz; i++){
int cc = 0;
for (int j = 0; j < sz; j++) cc += board[i][j];
result.push_back (cc & 1);
}
for (int j = 0; j < sz; j++){
int cc = 0;
for (int i = 0; i < sz; i++) cc += board[i][j];
result.push_back (cc & 1);
}
return result;
}
vector <int> retrieve (vector <int> data){
vector <int> result;
vector <int> state;
int sz = 8;
if (data.size () >= 96) sz = 16;
for (int i = 0; i + (sz << 1) < data.size (); i++) result.push_back (data[i]);
for (int i = data.size () - (sz << 1); i < data.size (); i++) state.push_back (data[i]);
vector <vector <int>> board (sz, vector <int> (sz, 0));
int i = 0, j = 0, idx = 0;
while (idx < result.size ()){
board[i][j] = result[idx];
j++;
if (j >= sz){
i++; j = 0;
}
idx++;
}
int num_wrong = 0;
int idx1 = 0, idx2 = 0;
for (int i = 0; i < sz; i++){
int cc = 0;
for (int j = 0; j < sz; j++) cc += board[i][j];
if (state[i] != (cc & 1)){
num_wrong++;
idx1 = i;
}
}
for (int j = 0; j < sz; j++){
int cc = 0;
for (int i = 0; i < sz; i++) cc += board[i][j];
if (state[j + sz] != (cc & 1)){
num_wrong++;
idx2 = j;
}
}
if (num_wrong <= 1) return result;
result[idx1 * sz + idx2] ^= 1;
return result;
}
// love you, noodles0428 <333
// tst25
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |