Submission #1295933

#TimeUsernameProblemLanguageResultExecution timeMemory
1295933turbatVision Program (IOI19_vision)C++20
100 / 100
36 ms7672 KiB
#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 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...