Submission #427805

#TimeUsernameProblemLanguageResultExecution timeMemory
427805albertolg101Vision Program (IOI19_vision)C++17
41 / 100
2 ms332 KiB
#include <bits/stdc++.h>
#include "vision.h"

using namespace std;

void f (int a, int b, int c, int d, int H, int W, int &last)
{
	if(c >= H or d >= W or d < 0)
		return ;

	int cell_a = a * W + b, 
		cell_b = c * W + d;

	int now = add_and(vector<int> {cell_a, cell_b});
	if(last != 0)
		last = add_or(vector<int> {now, last});
	else
		last = now;
}

void construct_network(int H, int W, int K) {

	if(min(H, W) <= 10 or max(H, W) == 1)
	{
		int last = 0;
		for(int i = 0 ; i < H ; i++)
		{
			for(int j = 0 ; j < W ; j++)
			{
				for(int a = 0 ; i + a < H and a <= K ; a++)
				{
					int b = K - a;
					f(i, j, i+a, j+b, H, W, last);
					f(i, j, i+a, j-b, H, W, last);
				}
			}
		}
	}

	else
	{
		int last = 0, i = 0, j = 0;
		for(int a = 0 ; i + a < H and a <= K ; a++)
		{
			int b = K - a;
			f(i, j, i+a, j+b, H, W, last);
			f(i, j, i+a, j-b, H, W, last);
		}
	}
	

	return ;
}
#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...