import java.util.*; // abstract checker public class JohnChecker { public static final int MINWH = 1; public static final int MAXWH = 1000; public static final int MINB = 1; public static final int MAXB = 500; public static final int MINOBJ = 1; public static final int MAXOBJ = 20; public static final int MINR = -10; public static final int MAXR = 10; public static final int MINS = 1; public static final int MAXS = 10; public static final int MINP = 1; public static final int MAXP = 10; public static final int MINQ = 1; public static final int MAXQ = 1000; public static final int MAXSEGS = 200; public static double ZEROLIM = 1.0E-9; public static object[] objects = new object[MAXOBJ]; public static segment[] segs = new segment[MAXSEGS]; public static int nSegs = 0; public static void printError(int line, String msg) { System.out.println("ERROR Line " + line + ": " + msg); // System.exit(-1); } public static void checkIntBounds(int x, int min, int max, String name, int nLines) { if (x < min || x > max) printError(nLines, "invalid " + name + " value: " + x); } public static void checkDoubleBounds(double x, double min, double max, String name, int nLines) { if (x < min || x > max) printError(nLines, "invalid " + name + " value: " + x); } public static int nextInt(StringTokenizer st) { return Integer.parseInt(st.nextToken()); } public static boolean intersection(segment r, segment s) // check for intersection of ball vector with segment s { double t, u; double a = r.a.x; double b = r.a.y; double c = s.a.x; double d = s.a.y; double det = -a*d + b*c; if (Math.abs(det) <= ZEROLIM) return false; double e = s.p1.x - r.p1.x; double f = s.p1.y - r.p1.y; u = (-e*b+f*a)/det; if (u < 0.0 || u > 1.0) return false; t = (-e*d + f*c)/det; return (t >= 0.0 && t <= 1.0); } public static void checkForIntersection(int iseg, int nSegs, int okSeg, int nLines) { for(int k=0; k= 0) printError(nLines, "non-convex or non-clockwise segments: " + segs[i] + " to " + segs[i+1]); } val = segs[stop].a.x*segs[start].a.y - segs[stop].a.y*segs[start].a.x; if (val >= 0) printError(nLines, "non-convex or non-clockwise segments: " + segs[stop] + " to " + segs[start]); } public static void main(String [] args) { Scanner in = new Scanner(System.in); int w, h, n, m, r, s; double l; String line; int nLines=0; for(int i=0; i