diff options
1 files changed, 54 insertions, 0 deletions
| -rw-r--r-- | Year 2/Design and analysis of algorithms/Practicum/Homeworks/HW1-Crossword.cpp | 54 |
diff --git a/Year 2/Design and analysis of algorithms/Practicum/Homeworks/HW1-Crossword.cpp b/Year 2/Design and analysis of algorithms/Practicum/Homeworks/HW1-Crossword.cpp new file mode 100644 index 0000000..a1ce13d --- /dev/null +++ b/Year 2/Design and analysis of algorithms/Practicum/Homeworks/HW1-Crossword.cpp @@ -0,0 +1,54 @@ +#include <cmath> +#include <cstdio> +#include <vector> +#include <iostream> +#include <algorithm> +using namespace std; + +bool betp(int big, int bet, int low) { + return big >= bet && bet >= low; +} + +int main() { + int N = 0, M = 0; + scanf("%d %d", &N, &M); + vector<vector<int>> crossroads; + int ai = 0, bi = 0; + for (int i = 0; i < N; i++) { + scanf("%d %d", &ai, &bi); + crossroads.push_back({ ai, bi }); + } + vector<vector<int>> trees; + for (int i = 0; i < M; i++) { + scanf("%d %d", &ai, &bi); + trees.push_back({ ai, bi }); + } + int Q = 0; + scanf("%d", &Q); + vector<int> sizes; + for (int i = 0; i < Q; i++) { + scanf("%d", &ai); + sizes.push_back(ai / 2); + } + + vector<int> results(sizes.size()); + for (int i = 0; i < sizes.size(); i++) { + results[i] = 0; + for (vector<int>& tree : trees) { + for (vector<int>& crossroad : crossroads) { + if (betp(crossroad[0] + sizes[i], tree[0], crossroad[0] - sizes[i]) || + betp(crossroad[1] + sizes[i], tree[1], crossroad[1] - sizes[i])) { + results[i]++; + break; + } + } + } + } + + printf("%d", results[0]); + for (int i = 1; i < results.size(); i++) { + printf(" %d", results[i]); + } + + return 0; +} |
