This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
#include "vision.h"
//#include "grader.cpp"
using namespace std;
int h ,w ,k;
int d(int i ,int j){ return i*w+j; }
int dist(int r ,int c ,int i ,int j){
    return abs(r-i) + abs(j-c);
}
void construct_network(int H, int W, int K) { h=H ,w=W ,k=K;
    int id = h*w;
    vector <int> rowOr(h) ,rowXor(h);
    for(int i=0; i<h; i++){
        vector <int> r;
        for(int j=0; j<w; j++)
            r.push_back(d(i ,j));
        add_or(r);
        rowOr[i] = id++;
        add_xor(r);
        rowXor[i] = id++;
    }
    vector <int> colOr(w) ,colXor(w);
    for(int j=0; j<w; j++){
        vector <int> c;
        for(int i=0; i<h; i++)
            c.push_back(d(i ,j));
        add_or(c);
        colOr[j] = id++;
        add_xor(c);
        colXor[j] = id++;
    }
    add_or(rowXor);
    int OrAllRowsXor = id++;
    add_or(colXor);
    int OrAllColsXor = id++;
    vector <int> rowsAnd(h-1);
    for(int i=1; i<h; i++){
        add_and({rowOr[i-1] ,rowOr[i]});
        rowsAnd[i] = id++;
    }
    vector <int> colsAnd(h-1);
    for(int i=1; i<w; i++){
        add_and({colOr[i-1] ,colOr[i]});
        colsAnd[i] = id++;
    }
    //(!OrAllColsXor && OrAllRowsAnd) || (!OrAllRowsXor && OrAllColsAnd)
    add_or(rowsAnd);
    int OrAllRowsAnd = id++;
    add_or(colsAnd);
    int OrAllColsAnd = id++;
    add_not(OrAllRowsXor);
    int notOrAllRowsXor = id++;
    add_not(OrAllColsXor);
    int notOrAllColsXor = id++;
    add_and({OrAllRowsAnd ,notOrAllColsXor}) ,id++;
    add_and({OrAllColsAnd ,notOrAllRowsXor}) ,id++;
    add_or({id-2 ,id-1});
}
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... |