#include #include #include #include FILE* input; int upMax, downMin, rightMin, leftMax; int upMaxI = 0, downMinI = 0, rightMinI = 0, leftMaxI = 0; int max (int a, int b) { if (a < b) return b; else return a; } int min (int a, int b) { if (a < b) return a; else return b; } void wall (int prevX, int prevY, int curX, int curY) { if (prevX == curX) // vert { if (curY > prevY) //up { if (upMaxI == 0) { upMax = curX; upMaxI = 1; } else upMax = max (upMax, curX); } else // down { if (downMinI == 0) { downMinI = 1; downMin = curX; } else downMin = min (downMin, curX); } } else // horz { if (curX > prevX) { if (rightMinI == 0) { rightMinI = 1; rightMin = curY; } else rightMin = min (rightMin, curY); } else { if (leftMaxI == 0) { leftMaxI = 1; leftMax = curY; } else leftMax = max (leftMax, curY); } } } void handle(int n) { int firstX, firstY, curX, curY, prevX, prevY; fscanf (input, " %d %d", &curX, &curY); firstX = curX; firstY = curY; for (int line = 1; line < n; line++) { prevX = curX; prevY = curY; fscanf (input, " %d %d", &curX, &curY); wall (prevX, prevY, curX, curY); } wall (curX, curY, firstX, firstY); if (upMax <= downMin && leftMax <= rightMin) printf ("Surveillance is possible.\n"); else printf ("Surveillance is impossible.\n"); } int main() { input = fopen("video.in", "r"); for (int p = 0;; p++) { int n; fscanf (input, "%d", &n); if (n == 0) break; printf("Floor #%d\n", p + 1); handle(n); printf("\n"); } return 0; }