Submission #1246105

#TimeUsernameProblemLanguageResultExecution timeMemory
1246105ricardsjansonsVision Program (IOI19_vision)C++20
0 / 100
2 ms1728 KiB
#include "vision.h"
#include <bits/stdc++.h>
using namespace std;


int h,w,k;

int fpt(int x,int y){
    return y*w+x;
}

int fc(int c){
    return w*h+2*c-1;
}

int fcx(int c){
    return w*h+2*c;
}

int fr(int r){
    return w*h+2*w+2*r-1;
}

int frx(int r){
    return w*h+2*w+2*r;
}

void construct_network(int H, int W, int K) {
	h=H;
	w=W;
	k=K;
	for(int i=0;i<w;i++){
        vector<int>ns;
        for(int j=0;j<h;j++){
            ns.push_back(fpt(i,j));
        }
        add_or(ns);
        add_xor(ns);
	}
	for(int i=0;i<h;i++){
        vector<int>ns;
        for(int j=0;j<w;j++){
            ns.push_back(fpt(j,i));
        }
        add_or(ns);
        add_xor(ns);
	}
	vector<int>c;
	for(int dx=0;dx<=k;dx++){
        int dy=k-dx;
        for(int i=0;i+dx<w;i++){
            for(int j=0;j+dy<h;j++){
                vector<int>n1{fc(i),fc(i+dx),fr(j),fr(j+dy)};
                if(dx==0){
                    n1.push_back(add_not(fcx(i)));
                }
                if(dy==0){
                    n1.push_back(add_not(frx(j)));
                }
                c.push_back(add_and(n1));
            }
        }
    }
    add_or(c);
}
#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...