Submission #1038819

#TimeUsernameProblemLanguageResultExecution timeMemory
1038819DorostWefVision Program (IOI19_vision)C++17
100 / 100
30 ms4700 KiB
#include "vision.h"
#include <bits/stdc++.h>

using namespace std;

void construct_network(int H, int W, int K) {
	int n = H + W - 1;
	vector <int> a;
	for (int s = 0; s < n; s++) {
		vector <int> v;
		for (int i = 0; i < H; i++) {
			int j = (s - i);
			if (j < 0 || j >= W)
				continue;
			v.push_back((i * W) + j);
		}
		a.push_back (add_or (v));
	}
	int k = K;
	vector <int> w;
	for (int i = 0; i < n - k; i++) {
		w.push_back(add_and ({a[i], a[i + k]}));
	}
	int aa = add_or (w);
	w.clear();
	for (int i = 0; i < n; i++) {
		vector <int> v;
		for (int j = 0; j < n; j++) {
			if (abs(i - j) > k) {
				v.push_back(a[j]);
			}
		}
		if (v.empty())
			continue;
		w.push_back(add_and ({a[i], add_or (v)}));
	}
	w.push_back(add_and ({0, add_not (0)}));
	int ab = add_or (w);
	ab = add_not (ab);
	a.clear();
	// wefwef
	for (int s = 0; s < n; s++) {
		int ss = s - (W - 1);
		vector <int> v;
		for (int i = 0; i < H; i++) {
			int j = (i - ss);
			if (j < 0 || j >= W)
				continue;
			v.push_back((i * W) + j);
		}
		a.push_back (add_or (v));
	}
	w.clear();
	for (int i = 0; i < n - k; i++) {
		w.push_back(add_and ({a[i], a[i + k]}));
	}
	int ba = add_or (w);
	w.clear();
	for (int i = 0; i < n; i++) {
		vector <int> v;
		for (int j = 0; j < n; j++) {
			if (abs(i - j) > k) {
				v.push_back(a[j]);
			}
		}
		if (v.empty())
			continue;
		w.push_back(add_and ({a[i], add_or (v)}));
	}
	w.push_back(add_and ({0, add_not (0)}));
	int bb = add_or (w);
	bb = add_not (bb);
	int c = add_or ({aa, ba});
	add_and ({c, ab, bb});
}
#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...