Submission #738254

#TimeUsernameProblemLanguageResultExecution timeMemory
738254NeroZeinVision Program (IOI19_vision)C++17
44 / 100
1086 ms9124 KiB
#include "vision.h"
#include <bits/stdc++.h> 
using namespace std; 
 
int n, m;
 
void construct_network(int H, int W, int K) {
	n = H, m = W; 
	auto dis = [&](int i, int j, int ii, int jj) {
		return abs(ii - i) + abs(jj - j);
	};
	vector<vector<int>> g(n * m);  
	for (int i = 0; i < n; ++i) {
		for (int j = 0; j < m; ++j) {
			for (int ii = 0; ii < n; ++ii) {
				for (int jj = 0; jj < m; ++jj) {
					if (dis(i, j, ii, jj) == K) {
						g[i * m + j].push_back(ii * m + jj); 
					}
				}
			}
		}
	}
	int cur = n * m;
	vector<int> ask; 
	for (int i = 0; i < n; ++i) {
		for (int j = 0; j < m; ++j) {
			int num = i * m + j;
			if (g[num].empty()) continue;
			sort(g[num].begin(), g[num].end()); 
			add_xor(g[num]); 
			int fi = cur++; 
			g[num].push_back(num); 
			sort(g[num].begin(), g[num].end()); 
			add_xor(g[num]); 
			int se = cur++;
			add_not(se); 
			int th = cur++; 
			vector<int> v = {fi, th};
			add_and(v); 
			int fo = cur++; 
			ask.push_back(fo); 
		}
	}
	add_or(ask); 
}
#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...