Submission #1187087

#TimeUsernameProblemLanguageResultExecution timeMemory
1187087origabaiVision Program (IOI19_vision)C++20
14 / 100
6 ms1096 KiB
#include<bits/stdc++.h>
using namespace std;
#include"vision.h"

void construct_network(int H, int W, int K){
    vector<int> row_xors,col_xors;
    for (int i=0;i<H;i++){
        vector<int> row;
        for (int j=0;j<W;j++){
            row.push_back(i*W+j);
        }
        row_xors.push_back(add_xor(row));
    }
    for (int j=0;j<W;j++){
        vector<int> col;
        for (int i=0;i<H;i++){
            col.push_back(i*W+j);
        }
        col_xors.push_back(add_xor(col));
    }
    vector<int> row_adj, col_adj;
    for (int i=0;i<H-1;i++){
        row_adj.push_back(add_and({row_xors[i],row_xors[i+1]}));
    }
    for (int i=0;i<W-1;i++){
        col_adj.push_back(add_and({col_xors[i],col_xors[i+1]}));
    }
    int a = add_or(row_xors);
    int an = add_not(a);
    int b = add_or(col_xors);
    int bn = add_not(b);
    if (row_adj.size() == 0){
        int d = add_or(col_adj);
        int e = add_and({an,d});      
    } else if (col_adj.size() == 0){
        int c = add_or(row_adj);
        int f = add_and({bn,c});
    } else {
        int c = add_or(row_adj);
        int d = add_or(col_adj);
        int e = add_and({an,d});
        int f = add_and({bn,c});
        int g = add_or({e,f});
    }
}
#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...