import java.awt.Polygon; import java.awt.geom.Point2D; import java.io.BufferedReader; import java.io.FileReader; import java.util.StringTokenizer; /* * Created on 2004/09/20 * * TODO To change the template for this generated file go to * Window - Preferences - Java - Code Style - Code Templates */ /** * @author horizon * * TODO To change the template for this generated type comment go to * Window - Preferences - Java - Code Style - Code Templates */ public class D { public static boolean check(double x1,double y1,double x2,double y2,Polygon p) { if((x1-x2)*(x1-x2) + (y1-y2)*(y1-y2) < 0.001) { //return p.contains(x1,y1); double d = 0.001; return p.intersects(x1-d,y1-d,2*d,2*d); } else { double x = (x1 + x2) / 2.0; double y = (y1 + y2) / 2.0; return check(x1,y1,x,y,p) && check(x2,y2,x,y,p); } } public static void main(String[] args) throws Exception{ BufferedReader r = new BufferedReader(new FileReader("video.txt")); int count = 0; while(true){ count++; int n = Integer.parseInt(r.readLine()); if(n == 0)break; int[] x = new int[n]; int[] y = new int[n]; for(int i = 0;i < n;i++) { StringTokenizer st = new StringTokenizer(r.readLine()); x[i] = Integer.parseInt(st.nextToken()); y[i] = Integer.parseInt(st.nextToken()); } Polygon pol = new Polygon(x,y,n); boolean ans = false; for(int h = 0;h < n;h++) { for(int i = 0;i < n;i++) { boolean flag = true; for(int j = 0;j < n;j++) { flag = flag && check(x[i],y[h],x[j],y[j],pol); if(!flag)break; } if(flag) { ans = true; break; } } if(ans)break; } System.out.print("Floor #"); System.out.println(count); if(ans) System.out.println("Surveillance is possible."); else System.out.println("Surveillance is impossible."); System.out.println(); } } }