Submission #1344007

#TimeUsernameProblemLanguageResultExecution timeMemory
1344007MuhammadSaramVision Program (IOI19_vision)C++20
0 / 100
13 ms2836 KiB
#include "vision.h"
#include <bits/stdc++.h>

using namespace std;

void construct_network(int n, int m, int k)
{
	vector<int> v[2];
	for (int i=n-1;i>0;i--)
	{
		vector<int> q;
		for (int j=0;i+j<n && j<m;j++)
			q.push_back((i+j)*m+j);
		v[0].push_back(add_or(q)), q.clear();
		for (int j=m-1;i+m-j-1<n && j>=0;j--)
			q.push_back((i+m-j-1)*m+j);
		v[1].push_back(add_or(q));
	}
	for (int j=0;j<m;j++)
	{
		vector<int> q;
		for (int i=0;i+j<m && i<n;i++)
			q.push_back(i*m+i+j);
		v[0].push_back(add_or(q)), q.clear();
		for (int i=0;i<n && m-1-j-i>=0;i++)
			q.push_back((m-1-j-i)*m+m-1-j);
		v[1].push_back(add_or(q));
	}
	vector<int> a[2], c[2];
	c[0]={add_and({v[0][0],v[0][k]})}, c[1]={add_and({v[1][0],v[1][k]})};
	for (int i=0;i+k+1<v[0].size();i++)
	{
		vector<int> b[2];
		for (int j=i+k+1;j<v[0].size();j++)
			b[0].push_back(v[0][j]), b[1].push_back(v[1][j]);
		int x=add_or(b[0]), y=add_or(b[1]);
		a[0].push_back(add_and({v[0][i],x})),
		a[1].push_back(add_and({v[1][i],y}));
		c[0].push_back(add_and({v[0][i+1],v[0][i+1+k]})),
		c[1].push_back(add_and({v[1][i+1],v[1][i+1+k]}));
	}
	int x=add_not(add_or(a[0])), y=add_not(add_or(a[1]));
	int o=add_or(c[0]), p=add_or(c[1]);
	add_or({add_and({o,y}),add_and({x,p})});
}
#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...