Submission #732151

#TimeUsernameProblemLanguageResultExecution timeMemory
732151williampsunMobile (BOI12_mobile)Java
Compilation error
0 ms0 KiB
import java.io.*; import java.util.*; public class main { static int N; static int L; static boolean containsIntercept; static ArrayList<Coordinate> coordinates; public static void main(String[] args) throws IOException { BufferedReader br; PrintWriter out; StringTokenizer st; try { br = new BufferedReader(new FileReader("highcard.in")); out = new PrintWriter(new BufferedWriter(new FileWriter("highcard.out"))); st = new StringTokenizer(br.readLine()); } catch (Exception e) { br = new BufferedReader(new InputStreamReader(System.in)); out = new PrintWriter(System.out); st = new StringTokenizer(br.readLine()); } N = Integer.parseInt(st.nextToken()); L = Integer.parseInt(st.nextToken()); coordinates = new ArrayList<>(); for(int i = 0; i < N; i++) { st = new StringTokenizer(br.readLine()); coordinates.add(new Coordinate(Integer.parseInt(st.nextToken()), Integer.parseInt(st.nextToken()))); } double left = 0; double right = Integer.MAX_VALUE; double answer = 0; do { // System.out.println(left + " " + right); double mid = (left + right) / 2; boolean working = works(mid); if (working) { answer = mid; left = mid; } else { right = mid; } } while (!isEqual(left, right)); out.print(answer); out.close(); } static boolean works(double radius) { ArrayList<Intercept> intercepts = new ArrayList<>(); int id = 0; for(Coordinate c : coordinates) { double[] theseInter = getIntercepts(c.x, c.y, radius); if(theseInter.length == 2) { intercepts.add(new Intercept(Math.min(theseInter[0], theseInter[1]), 1, id)); intercepts.add(new Intercept(Math.max(theseInter[0], theseInter[1]), 2, id)); id++; } else if (theseInter.length == 1) { intercepts.add(new Intercept(theseInter[0], 0, id)); id++; } } if(intercepts.size() > 0) { containsIntercept = true; } intercepts.sort(new Compare()); int numCircles = 0; for (Intercept intercept : intercepts) { if (intercept.x >= 0 && intercept.x <= L) { if(numCircles == 0 || (numCircles == 1 && intercept.type == 2)) { return true; } } if (intercept.type == 1) { numCircles++; } else if (intercept.type == 2) { numCircles--; } } return intercepts.size() == 0; } static double[] getIntercepts(double h, double k, double radius) { if(radius * radius - k * k > 0) { double sqrt = Math.sqrt(radius * radius - k * k); return new double[] {sqrt + h, -sqrt + h}; } else if (radius * radius - k * k == 0) { return new double[] {h}; } else { return new double[] {}; } } static boolean isEqual(double one, double two) { return Math.abs(one - two) <= 0.001; } static class Coordinate { int x; int y; public Coordinate(int x, int y) { this.x = x; this.y = y; } } static class Intercept { double x; int type; int id; public Intercept(double x, int t, int id) { this.x = x; type = t; this.id = id; } } static class Compare implements Comparator<Intercept> { @Override public int compare(Intercept o1, Intercept o2) { if(o1.x < o2.x) { return -1; } else if (o1.x == o2.x) { return 0; } return 1; } } }

Compilation message (stderr)

mobile.java:4: error: class main is public, should be declared in a file named main.java
public class main {
       ^
1 error