제출 #1135887

#제출 시각아이디문제언어결과실행 시간메모리
1135887noodles0428Data Transfer (IOI19_transfer)C++20
36 / 100
6 ms584 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){
    vector <vector <int>> board (8, vector <int> (8, 0));
    int i = 0, j = 0, idx = 0;
    while (idx < source.size ()){
        board[i][j] = source[idx];
        j++;
        if (j >= 8){
            i++; j = 0;
        }
        idx++;
    }
    vector <int> result;
    for (int i = 0; i < 8; i++){
        int cc = 0;
        for (int j = 0; j < 8; j++) cc += board[i][j];
        result.push_back (cc & 1);
    }
    for (int j = 0; j < 8; j++){
        int cc = 0;
        for (int i = 0; i < 8; i++) cc += board[i][j];
        result.push_back (cc & 1);
    }
    return result;
}

vector <int> retrieve (vector <int> data){
    vector <int> result;
    vector <int> state;
    for (int i = 0; i + 16 < data.size (); i++) result.push_back (data[i]);
    for (int i = data.size () - 16; i < data.size (); i++) state.push_back (data[i]);
    vector <vector <int>> board (8, vector <int> (8, 0));
    int i = 0, j = 0, idx = 0;
    while (idx < result.size ()){
        board[i][j] = result[idx];
        j++;
        if (j >= 8){
            i++; j = 0;
        }
        idx++;
    }
    int num_wrong = 0;
    int idx1 = 0, idx2 = 0;
    for (int i = 0; i < 8; i++){
        int cc = 0;
        for (int j = 0; j < 8; j++) cc += board[i][j];
        if (state[i] != (cc & 1)){
            num_wrong++;
            idx1 = i;
        }
    }
    for (int j = 0; j < 8; j++){
        int cc = 0;
        for (int i = 0; i < 8; i++) cc += board[i][j];
        if (state[j + 8] != (cc & 1)){
            num_wrong++;
            idx2 = j;
        }
    }
    if (num_wrong <= 1) return result;
    result[idx1 * 8 + idx2] ^= 1;
    return result;
}

// love you, noodles0428 <333
// voi25 3rd++
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...