#include "vision.h"
using namespace std;
vector<int> concatVectors(const vector<vector<int>>& vecs) {
vector<int> result;
for (const auto& vec : vecs) {
result.insert(result.end(), vec.begin(), vec.end());
}
return result;
}
int add_lte_k(vector<vector<int>>& diagonals, int K) {
int totalDiagnols = diagonals.size();
vector<int> diagXorIndices, diagOrIndices, inSameDiagonals, lessThanK;
for (int d = 0; d < totalDiagnols; d++) {
diagXorIndices.push_back(add_xor(diagonals[d]));
diagOrIndices.push_back(add_or(diagonals[d]));
inSameDiagonals.push_back(add_xor({diagXorIndices[d], diagOrIndices[d]}));
}
for (int i = 0; i < totalDiagnols - K; i++) {
vector<int> input;
copy(diagOrIndices.begin() + i, diagOrIndices.begin() + i + K + 1,
back_inserter(input));
// printf("Adding less than k for diagonals %d to %d\n", i, i + K);
// for (int idx : input) {
// printf("%d ", idx);
// }
// printf("\n");
lessThanK.push_back(add_xor({add_or(input), add_xor(input)}));
}
return add_or(concatVectors({lessThanK, inSameDiagonals}));
}
int add_lte_k_both(int H, int W, int K) {
int totalDiagnols = H + W - 1;
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);
}
}
return add_and({add_lte_k(diagonals, K), add_lte_k(crossDiagonals, K)});
}
void construct_network(int H, int W, int K) {
// add_lte_k_both(H, W, K + 1);
add_and({add_lte_k_both(H, W, K), add_not(add_lte_k_both(H, W, K - 1))});
}
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |