Submission #1295895

#TimeUsernameProblemLanguageResultExecution timeMemory
1295895turbatVision Program (IOI19_vision)C++20
12 / 100
6 ms1600 KiB
#include "vision.h"
using namespace std;

void construct_network(int H, int W, int K) {
	vector<int> Ns;
	int totalDiagnols = H + W - 1;
	// printf("Total Diagonals: %d\n", totalDiagnols);
	vector <vector<int>> diagonals(totalDiagnols), crossDiagonals(totalDiagnols);
	for (int i = 0; i < H; i++) {
		for (int j = 0; j < W; j++) {
			diagonals[i + j].push_back(i * W + j);
			crossDiagonals[H - 1 - i + j].push_back(i * W + j);
		}
	}
	vector<int> diagXorIndices, crossDiagXorsIndices;
	for (int d = 0; d < totalDiagnols; d++) {
		// printf("Diagonal %d: ", d);
		// for (int idx : diagonals[d]) {
			// printf("%d ", idx);
		// }
		// printf("\n");
		diagXorIndices.push_back(add_xor(diagonals[d]));
	}
	for (int d = 0; d < totalDiagnols; d++) {
		// printf("Cross Diagonal %d: ", d);
		// for (int idx : crossDiagonals[d]) {
			// printf("%d ", idx);
		// }
		// printf("\n");
		crossDiagXorsIndices.push_back(add_xor(crossDiagonals[d]));
	}
	vector<int> answers;
	for (int i = 0;i < totalDiagnols - K;i++) {
		answers.push_back(add_and({ diagXorIndices[i], diagXorIndices[i + K] }));
		answers.push_back(add_and({ crossDiagXorsIndices[i], crossDiagXorsIndices[i + K] }));
	}
	add_or(answers);
}
#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...