Submission #1195284

#TimeUsernameProblemLanguageResultExecution timeMemory
1195284DeathIsAweVision Program (IOI19_vision)C++20
12 / 100
1 ms960 KiB
#include "vision.h"
#include <bits/stdc++.h>
#define pb push_back
#define mp make_pair
#define ff first
#define ss second
#define ll long long
using namespace std;
int h, w, k;


int ctn(pair<int,int> coords) {
	return coords.ff + w * coords.ss;
}


void isoob(pair<int,int> coords, vector<int> &Ns) {
	if (!(coords.ff < 0 || coords.ss < 0 || coords.ff >= w || coords.ss >= h)) {
		Ns.pb(ctn(mp(coords.ff, coords.ss)));
		//cout << coords.ff << ' ' << coords.ss << ' ' << ctn(mp(coords.ff, coords.ss)) << endl;
	}
}


void construct_network(int H, int W, int K) {
	h = H; w = W; k = K;
	pair<int,int> curpixel;
	vector<int> Ns, finalNs;
	int insnum = 0;
	for (int i=0;i<w;i++) {
		for (int j=0;j<h;j++) {
			curpixel.ff = i; curpixel.ss = j;
			Ns.clear();
			

			isoob(mp(curpixel.ff, curpixel.ss - k), Ns);
			isoob(mp(curpixel.ff, curpixel.ss + k), Ns);
			isoob(mp(curpixel.ff - k, curpixel.ss), Ns);
			isoob(mp(curpixel.ff + k, curpixel.ss), Ns);
			for (int l=1;l<k-1;l++) {
				isoob(mp(curpixel.ff - l, curpixel.ss - k + l), Ns);
				isoob(mp(curpixel.ff + l, curpixel.ss - k + l), Ns);
				isoob(mp(curpixel.ff - l, curpixel.ss + k - l), Ns);
				isoob(mp(curpixel.ff + l, curpixel.ss + k - l), Ns);
			}
			//for (int i: Ns) {
			//	cout << i << endl;
			//}
			//cout << endl;
			if (Ns.size() == 0) continue;
			insnum = add_or(Ns);
			Ns.clear(); Ns.pb(ctn(curpixel));
			add_or(Ns);


			Ns.clear();
			Ns.pb(insnum); 
			Ns.pb(insnum + 1);
			finalNs.pb(add_and(Ns));
		}
	}


	if (finalNs.size() == 0) {
		finalNs.pb(0); finalNs.pb(1); finalNs.pb(2);
		add_and(finalNs);
	} else {
		add_or(finalNs);
	}
}
#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...