Submission #1207464

#TimeUsernameProblemLanguageResultExecution timeMemory
1207464AvianshVision Program (IOI19_vision)C++20
8 / 100
1 ms328 KiB
#include "vision.h"
#include <bits/stdc++.h>

using namespace std;

void construct_network(int h, int w, int k) {
	//std::vector<int> Ns;
	//Ns = {0, 1};
	//int a = add_and(Ns);
	//Ns = {0, a};
	//int b = add_or(Ns);
	//Ns = {0, 1, b};
	//int c = add_xor(Ns);
	//add_not(c);
	auto conv = [&] (int i, int j){
        return i*w+j;
	};
	int cn = 0;
	set<array<int,2>>s;
	vector<array<int,2>>doen;
    for(int i = 0;i<1;i++){
        for(int j = 0;j<1;j++){
            vector<int>quer;
            for(int ai = 0;ai<=k;ai++){
                int ci = i+ai;
                int ji = j+(k-ai);
                if(ci>=h||ji>=w||ci<0||ji<0){
                    continue;
                }
                int initi = conv(i,j);
                int fini = conv(ci,ji);
                if(s.find({initi,fini})!=s.end()||s.find({fini,initi})!=s.end())
                    continue;
                quer.push_back(fini);
                s.insert({initi,fini});
            }

            for(int ai = 0;ai<=k;ai++){
                int ci = i-ai;
                int ji = j+(k-ai);
                if(ci>=h||ji>=w||ci<0||ji<0){
                    continue;
                }
                int initi = conv(i,j);
                int fini = conv(ci,ji);
                if(s.find({initi,fini})!=s.end()||s.find({fini,initi})!=s.end())
                    continue;
                quer.push_back(fini);
                s.insert({initi,fini});
            }
            if(quer.size()==0)
                continue;
            add_or(quer);
            doen.push_back({i,j});
        }
    }
    int indi = h*w;
    for(array<int,2>a:doen){
        int i = a[0];
        int j = a[1];
        add_and({indi,conv(i,j)});
        indi++;
    }
    vector<int>quer;
    for(int i = 0;i<doen.size();i++)
        quer.push_back(i+indi);
    add_or(quer);
}
#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...