Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<iostream>
- #include <vector>
- using namespace std;
- int main() {
- int w, h, n;
- cin >> w >> h >> n;
- vector<vector<vector<bool>>> a(w+2, vector<vector<bool>>(h+2, vector<bool>(n+1, false)));
- int x1, x2, y1, y2;
- for (int j = 1; j <= w; j++) {
- for (int k = 1; k <= h; k++) {
- a[j][k][0] = true;
- }
- }
- for (int i = 1; i <= n; i++) {
- cin >> x1 >> y1 >> x2 >> y2;
- for (int j = 1; j <= w; j++) {
- for (int k = 1; k <= h; k++) {
- if ((a[j-1][k][n - 1] || a[j+1][k][n - 1] || a[j][k-1][n - 1] || a[j][k+1][n - 1]) && !(j>=x1 && j<=x2 && k>=y1 && k<=y2)) {
- a[j][k][n] = true;
- }
- }
- }
- }
- bool q = true;
- vector <pair<int, int>> ans(n);
- for (int j = 1; j <= w; j++) {
- for (int k = 1; k <= h; k++) {
- cout << a[j][k][n] << ' ';
- if (a[j][k][n]) {
- q = false;
- ans[n] = { j, k };
- break;
- }
- }
- cout << endl;
- }
- if (q) {
- cout << "Impossible";
- }
- else {
- for (int i = n - 1; i >= 1; i--) {
- if (a[ans[i + 1].first-1][ans[i + 1].second][i]) {
- ans[i] = { ans[i + 1].first - 1, ans[i + 1].second };
- }
- else if (a[ans[i + 1].first+1][ans[i + 1].second][i]) {
- ans[i] = { ans[i + 1].first + 1, ans[i + 1].second };
- }
- else if (a[ans[i + 1].first][ans[i + 1].second-1][i]) {
- ans[i] = { ans[i + 1].first , ans[i + 1].second-1 };
- }
- else if (a[ans[i + 1].first][ans[i + 1].second+1][i]) {
- ans[i] = { ans[i + 1].first , ans[i + 1].second+1 };
- }
- }
- for (int i = 1; i <= n; i++) {
- cout << ans[i].first << ' ' << ans[i].second << endl;
- }
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement