제출 #602845

#제출 시각아이디문제언어결과실행 시간메모리
602845Clan328Vision Program (IOI19_vision)C++17
44 / 100
13 ms1868 KiB
#include <bits/stdc++.h>

using namespace std;

#define pb push_back

int add_and(std::vector<int> Ns);

int add_or(std::vector<int> Ns);

int add_xor(std::vector<int> Ns);

int add_not(int N);

int transformCoords(int W, int i, int j) {
	return i*W+j;
}

bool isValid(int H, int W, int i, int j) {
	if (i < 0 || j < 0 || i >= H || j >= W) return false;
	return true;
}

void construct_network(int H, int W, int K) {
	vector<int> Ns;
	int idx = 0;
	for (int x = 0; x < H; x++) {
		for (int y = 0; y < W; y++) {
			vector<int> arr;
			for (int i = 0; i <= K; i++) {
				if (isValid(H, W, i+x, K-i+y)) {
					arr.pb(transformCoords(W, i+x, K-i+y));
				}
				if (isValid(H, W, x-i, K-i+y) && x-i != i+x) {
					arr.pb(transformCoords(W, x-i, K-i+y));
				}
			}
			if (arr.size()) {
				add_or({transformCoords(W, x, y)});
				add_or(arr);
				idx += 2;
			}
		}
	}

	// for (int i = 0; i < Ns.size(); i++) {
	// 	cout << Ns[i] << " x ";
	// }
	// cout << endl;

	for (int i = 0; i < idx; i+=2) {
		Ns.pb(add_and({H*W+i, H*W+i+1}));
	}

	add_or(Ns);
}
#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...