Submission #1221712

#TimeUsernameProblemLanguageResultExecution timeMemory
1221712VMaksimoski008Vision Program (IOI19_vision)C++20
8 / 100
6 ms1352 KiB
#include "vision.h"
#include <bits/stdc++.h>
using namespace std;

int id[205][205], c = 0;

void construct_network(int n, int m, int k) {
	for(int i=0; i<n; i++)
		for(int j=0; j<m; j++)
			id[i][j] = c++;

	//(0, 0) e crno
	vector<int> row;
	for(int i=0; i<n; i++) {
		vector<int> v;
		for(int j=0; j<m; j++) v.push_back(id[i][j]);
		row.push_back(add_or(v));
	}

	vector<int> col;
	for(int j=0; j<m; j++) {
		vector<int> v;
		for(int i=0; i<n; i++) v.push_back(id[i][j]);
		col.push_back(add_or(v));
	}

	//dali e i > 1, j > 1
	vector<int> res;
	for(int i=1; i<n; i++)
		if(k-i < m && k-i > 0) res.push_back(add_and({ row[i], col[k-i] }));

	//dali e i = 0
	if(n > 1) {
	vector<int> vec_x;
	for(int i=1; i<n; i++) vec_x.push_back(add_not(row[i]));
	if(k < m) res.push_back(add_and({ add_and(vec_x), col[k] }));
	} else {
		if(k < m) add_or({ col[k] });
		return ;
	}

	if(m > 1) {
	vector<int> vec_y;
	for(int j=1; j<m; j++) vec_y.push_back(add_not(col[j]));
	if(k < n) res.push_back(add_and({ add_and(vec_y), row[k] }));
	} else {
		if(k < n) add_or({ row[k] });
		return ;
	}
	// assert(!res.empty());
	add_or(res);
}
#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...