Submission #1135889

#TimeUsernameProblemLanguageResultExecution timeMemory
1135889noodles0428Data Transfer (IOI19_transfer)C++20
60 / 100
143 ms1728 KiB
#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 timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...