Submission #825605

#TimeUsernameProblemLanguageResultExecution timeMemory
825605caganyanmazVision Program (IOI19_vision)C++17
44 / 100
9 ms1900 KiB
#include "vision.h"
#define pb push_back
#include <bits/stdc++.h>
using namespace std;

#ifdef DEBUGGING
#include "../debug.h"
#else
#define debug(x...) void(42)
#endif

int h, w, k;

static inline bool in_bounds(int i, int j)
{
	return i >= 0 && j >= 0 && i < h && j < w;
}

static inline int serialize(int i, int j)
{
	return i * w + j;
}

int last;

void test_square(int i, int j)
{
	vector<int> v;
	for (int dj = k; dj>0; dj--)
	{
		int di = k-dj;
		if (in_bounds(i+di, j-dj))
			v.pb(serialize(i+di, j-dj));
		if (!di)
			continue;
		if (in_bounds(i-di, j-dj))
			v.pb(serialize(i-di, j-dj));
	}
	if (in_bounds(i-k, j))
		v.pb(serialize(i-k, j));
	if (v.empty())
		return;
	int a = add_or(v);
	vector<int> vv;
	vv.pb(a);
	vv.pb(serialize(i, j));
	int b = add_and(vv);
	last = b;
}

void construct_network(int H, int W, int K)
{
	h = H, w = W, k = K;
	last = h*w;
	for (int i = 0; i < H; i++)
		for (int j = 0; j < W; j++)
			test_square(i, j);
	vector<int> v;
	for (int i = h*w+1; i <= last; i+=2)
		v.pb(i);
	add_or(v);
}
#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...