Submission #1221425

#TimeUsernameProblemLanguageResultExecution timeMemory
1221425thangdz2k7Vision Program (IOI19_vision)C++20
100 / 100
44 ms7360 KiB
#include "vision.h"

#include <bits/stdc++.h>

using namespace std;

int solve(int h, int w, int k){ // distance >= k
	vector <vector <int>> diaL(h + w - 1), diaR(h + w - 1);

	for (int i = 0; i < h; ++ i){
		for (int j = 0; j < w; ++ j){
			diaL[i + j].push_back(i * w + j);
			diaR[i + w - 1 - j].push_back(i * w + j);
		}
	}

	vector <int> ans, prefL, prefR;

	for (int i = k; i < h + w - 1; ++ i){
		prefL.push_back(add_or(diaL[i - k]));
		prefR.push_back(add_or(diaR[i - k]));
		ans.push_back(add_and({add_or(prefL), add_or(diaL[i])}));
		ans.push_back(add_and({add_or(prefR), add_or(diaR[i])}));
	}

	return add_or(ans);
}

void construct_network(int h, int w, int k){
	if (k == h + w - 2) solve(h, w, k);
	else add_xor({solve(h, w, k), solve(h, w, k + 1)});
}
#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...