Submission #1210364

#TimeUsernameProblemLanguageResultExecution timeMemory
1210364SpyrosAlivVision Program (IOI19_vision)C++20
14 / 100
14 ms2888 KiB
#include "vision.h"
#include <bits/stdc++.h>
using namespace std;
/*
int add_not(int N);
int add_and(vector<int> Ns);
int add_or(vector<int> Ns);
int add_xor(vector<int> Ns);
*/
vector<int> get_dis(int r, int c, vector<vector<int>> &grid, int k) {
    int n = grid.size();
    int m = grid[0].size();
    vector<int> fin;
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < m; j++) {
            if (abs(i - r) + abs(j - c) == k) fin.push_back(grid[i][j]);
        }
    }
    return fin;
} 

vector<int> get_row(int row, vector<vector<int>> &grid) {
    int n = grid.size();
    int m = grid[0].size();
    if (row < 0 || row >= n) return {};
    vector<int> currRow;
    for (int j = 0; j < m; j++) {
        currRow.push_back(grid[row][j]);
    }
    return currRow;
}

vector<int> get_col(int col, vector<vector<int>> &grid) {
    int n = grid.size();
    int m = grid[0].size();
    if (col < 0 || col >= m) return {};
    vector<int> currCol;
    for (int j = 0; j < n; j++) {
        currCol.push_back(grid[j][col]);
    }
    return currCol;
}

void construct_network(int H, int W, int K) {
    int n = H;
    int m = W;
    int k = K;
    vector<vector<int>> grid(n, vector<int>(m));
    int curr = 0;
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < m; j++) {
            grid[i][j] = curr++;
        }
    }
    int sameCol, sameRow, adjCol, adjRow;
    // take the XOR of the ORs of all columns: true -> they are in the same column
    // same for rows
    vector<int> ors;
    for (int col = 0; col < m; col++) {
        vector<int> currCol = get_col(col, grid);
        ors.push_back(add_or(currCol));
    }
    sameCol = add_xor(ors);
    ors.clear();
    for (int row = 0; row < n; row++) {
        vector<int> currRow = get_row(row, grid);
        ors.push_back(add_or(currRow));
    }
    sameRow = add_xor(ors);
    // take the XOR of the ORs of all ADJACENT columns: true -> the are in adjacnt columns
    ors.clear();
    for (int col = 0; col <= m; col++) {
        vector<int> a = get_col(col, grid);
        vector<int> b = get_col(col-1, grid);
        for (auto x: b) a.push_back(x);
        ors.push_back(add_or(a));
    }
    adjCol = add_xor(ors);
    ors.clear();
    for (int row = 0; row <= n; row++) {
        vector<int> a = get_row(row, grid);
        vector<int> b = get_row(row-1, grid);
        for (auto x: b) a.push_back(x);
        ors.push_back(add_or(a));
    }
    adjRow = add_xor(ors);
    add_or({add_and({adjCol, sameRow}), add_and({sameCol, adjRow})});
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...