Submission #1050522

#TimeUsernameProblemLanguageResultExecution timeMemory
1050522Onur_IlgazVision Program (IOI19_vision)C++17
44 / 100
10 ms3028 KiB
#include "vision.h"
#include <bits/stdc++.h>
using namespace std;

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

	auto dist = [&](pair<int, int> a, pair<int, int> b) {
		return abs(a.first - b.first) + abs(a.second - b.second);
	};
	auto toint = [&](pair<int,int> a) {
		return a.first * W + a.second;
	};
	vector <pair<int, int> > v = {{0,0}, {0, W - 1}, {H - 1, 0}, {H - 1, W - 1}};
	int cnt = 0;
	vector <int> yesyes;
	for(int i = 0; i < H; i++) {
		for(int j = 0; j < W; j++) {
			int mn = 0;
			for(auto it:v) {
				mn = max(mn, dist({i, j}, it));
			}
			if(mn < K) continue;
			vector <int> baklava;
			for(auto signi : {1, -1}) {
				for(auto signj : {1, -1}) {
					
					for(int addi = K; addi >= 0; addi--) {
						int addj = K - addi;
						int ni = i + addi * signi, nj = j + addj * signj;
						if(min(ni, nj) >= 0 and ni < H and nj < W) baklava.push_back(toint({ni ,nj}));
					}
				
				}
			}
			sort(baklava.begin(), baklava.end());
			auto last = unique(v.begin(), v.end());
		    v.erase(last, v.end());
		    // for(auto it:baklava) {
		    // 	cout << it << " ";
		    // }
		    // cout << ".\n";
			int l = add_or(baklava);
			vector <int> hallo = {l, toint({i, j})};
			yesyes.push_back(add_and(hallo));
			cnt++;
		}
	}

	add_or(yesyes);
}
#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...