Submission #592617

#TimeUsernameProblemLanguageResultExecution timeMemory
592617lcjVision Program (IOI19_vision)C++17
0 / 100
2 ms1104 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;
	for (int i = 0; i < H; i++)
	{
		for (int j = 0; j < 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(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...