제출 #592627

#제출 시각아이디문제언어결과실행 시간메모리
592627lcjVision Program (IOI19_vision)C++17
52 / 100
4 ms596 KiB
#include <bits/stdc++.h>
#include "vision.h"
#define loc(i, j) i*W+j

using namespace std;

typedef long long ll;
typedef pair<ll, ll> pll;
typedef pair<int, int> pii;

void construct_network(int H, int W, int K) {
	int cnt = 0;
	int base = H*W-1;
	vector<int> indires;
	bool skipper = 0;
	if (max(H, W) > 30 && min(H, W) != 1) skipper = 1;
	for (int i = 0; i < (skipper ? 1 : H) ; i++)
	{
		for (int j = 0; j < (skipper ? 1 : W); j++)
		{
			vector<int> Ns;
			for (int s = -K; s <= K; s++)
			{
				int ni = i+s;
				int nj = j + K-abs(s);
				if (ni >= 0 && ni < H && nj >= 0 && nj < W) {
					Ns.push_back(ni*W+nj);
				}
				if (abs(s) == K) continue;
				nj = j - (K-abs(s));
				if (ni >= 0 && ni < H && nj >= 0 && nj < W) {
					Ns.push_back(ni*W+nj);
				}
			}
			if (Ns.empty()) {
				add_and({0, 1, 2});
			}
			else {
				add_or(Ns);
			}
			cnt++;
			add_and({base + cnt, i*W+j});
			cnt++;
			indires.push_back(base + cnt);
		}
	}
	add_or(indires);
	cnt++;
}
#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...