Submission #602860

#TimeUsernameProblemLanguageResultExecution timeMemory
602860AriaHVision Program (IOI19_vision)C++17
58 / 100
17 ms1948 KiB
#include "vision.h"
#pragma GCC optimize("O3")

#include <bits/stdc++.h>

using namespace std;

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

#define F first
#define S second
#define all(x) x.begin(), x.end()
#define SZ(x) (int)x.size()
#define Mp make_pair
#define endl "\n"
#define fast_io ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);

const int N = 2e2 + 10;
const int LOG = 20;
const ll mod = 1e9 + 7;
const ll inf = 8e18;

int n, m, k;

inline int id(int i, int j)
{
	return i * m + j;
}

int rowOr[N], rowXor[N], colOr[N], colXor[N], disX[N], disY[N]; 

vector < int > opt;

void construct_network(int _n, int _m, int _k)
{
	n = _n; m = _m; k = _k;
	for(int i = 0; i < n; i ++)
	{
		vector < int > now;
		for(int j = 0; j < m; j ++)
		{
			now.push_back(id(i, j));
		}
		rowOr[i] = add_or(now);
		rowXor[i] = add_xor(now);
	}
	for(int j = 0; j < m; j ++)
	{
		vector < int > now;
		for(int i = 0; i < n; i ++)
		{
			now.push_back(id(i, j));
		}
		colOr[j] = add_or(now);
		colXor[j] = add_xor(now);
	}
	for(int dx = max(0, k - (m - 1)); dx <= min(n - 1, k); dx ++)
	{
		vector < int > now;
		for(int i = 0; i < n - dx; i ++)
		{
			if(dx == 0)
			{
				now.push_back(add_xor({rowOr[i], rowXor[i]}));
			}
			else
			{
				now.push_back(add_and({rowOr[i], rowOr[i + dx]}));
			}
		}
		disX[dx] = add_or(now);
	}
	for(int dy = max(0, k - (n - 1)); dy <= min(m - 1, k); dy ++)
	{
		vector < int > now;
		for(int i = 0; i < m - dy; i ++)
		{
			if(dy == 0)
			{
				now.push_back(add_xor({colOr[i], colXor[i]}));
			}
			else
			{
				now.push_back(add_and({colOr[i], colOr[i + dy]}));
			}
		}
		disY[dy] = add_or(now);
	}
	for(int dx = max(0, k - (m - 1)); dx <= min(n - 1, k); dx ++)
	{
		int dy = k - dx;
		opt.push_back(add_and({disX[dx], disY[dy]}));
	}
	add_or(opt);
}
#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...