Submission #1323261

#TimeUsernameProblemLanguageResultExecution timeMemory
1323261kasamchiVision Program (IOI19_vision)C++20
32 / 100
2 ms1204 KiB
#include "vision.h"
#include <bits/stdc++.h>
using namespace std;

void construct_network(int H, int W, int K) {
	int base = H * W, qidx = H * W;

	vector<int> Ns;
	for (int i = 0; i < H; i++) {
		Ns.clear();
		for (int j = 0; j < W; j++) {
			Ns.push_back(i * W + j);
		}
		add_or(Ns), qidx++;
	}

	for (int d = 1; d < H; d++) {
		for (int i = 0; i + d < H; i++) {
			add_and({{base + i, base + i + d}}), qidx++;
		}
	}

	Ns.clear();
	for (int i = 0; i < H; i++, base++) {
		Ns.push_back(base);
	}
	add_xor(Ns), qidx++;

	for (int d = 1; d < H; d++) {
		Ns.clear();
		for (int i = 0; i < H - d; i++, base++) {
			Ns.push_back(base);
		}
		add_or(Ns), qidx++;
	}

	int hdb = qidx - H;
	// ------------------------------
	base = qidx;
	for (int j = 0; j < W; j++) {
		Ns.clear();
		for (int i = 0; i < H; i++) {
			Ns.push_back(i * W + j);
		}
		add_or(Ns), qidx++;
	}

	for (int d = 1; d < W; d++) {
		for (int i = 0; i + d < W; i++) {
			add_and({{base + i, base + i + d}}), qidx++;
		}
	}

	Ns.clear();
	for (int i = 0; i < W; i++, base++) {
		Ns.push_back(base);
	}
	add_xor(Ns), qidx++;

	for (int d = 1; d < W; d++) {
		Ns.clear();
		for (int i = 0; i < W - d; i++, base++) {
			Ns.push_back(base);
		}
		add_or(Ns), qidx++;
	}

	int wdb = qidx - W;
	// ------------------------------
	base = qidx;
	for (int i = 0; i < H; i++) {
		int j = K - i;
		if (j >= 0 && j < W) {
			add_and({hdb + i, wdb + j}), qidx++;
		}
	}

	Ns.clear();
	for (int i = base; i < qidx; i++) {
		Ns.push_back(i);
	}
	add_or(Ns), qidx++;
}
#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...