Submission #1246099

#TimeUsernameProblemLanguageResultExecution timeMemory
1246099ricardsjansonsVision Program (IOI19_vision)C++20
44 / 100
7 ms3776 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+c;
}

int fr(int r){
    return w*h+w+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);
	}
	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);
	}
	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){
                    vector<int>n2;
                    for(int y=0;y<h;y++){
                        n2.push_back(fpt(i,y));
                    }
                    n1.push_back(add_not(add_xor(n2)));
                }
                if(dy==0){
                    vector<int>n2;
                    for(int x=0;x<w;x++){
                        n2.push_back(fpt(x,j));
                    }
                    n1.push_back(add_not(add_xor(n2)));
                }
                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...