Submission #1066728

#TimeUsernameProblemLanguageResultExecution timeMemory
1066728Oz121Mobile (BOI12_mobile)Java
13 / 100
1067 ms131072 KiB
import java.io.*; import java.util.*; public class mobile { public static int num; public static double[][] arr; public static void main(String[] args) throws IOException { BufferedReader scan = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer l1 = new StringTokenizer(scan.readLine()); num = Integer.parseInt(l1.nextToken()); int L = Integer.parseInt(l1.nextToken()); arr = new double[num][2]; for (int i = 0;i<num;i++) { StringTokenizer st = new StringTokenizer(scan.readLine()); arr[i][0] = Integer.parseInt(st.nextToken()); arr[i][1] = Integer.parseInt(st.nextToken()); } double l = 0; double h = Math.pow(10,9); while (h-l>Math.pow(10,-3)) { double mid = (l+h)/2; boolean work = true; ArrayList<Pair> endpoints = getEndpoints(mid); endpoints.sort(Comparator.comparingDouble(i -> i.l)); /*System.out.println(" "+mid); for (int i = 0;i<endpoints.size();i++) { System.out.println(endpoints.get(i).l+" "+endpoints.get(i).r); } System.out.println("--------");*/ if (endpoints.isEmpty()) {l = mid; continue;} double left = endpoints.get(0).l; double right = endpoints.get(0).r; for (int i = 1;i<endpoints.size();i++) { if (endpoints.get(i).l>right) work = false; left = Math.min(left, endpoints.get(i).l); right = Math.max(right, endpoints.get(i).r); } work = (work)&&(left<=0&&right>=L); if (work) h = mid; else l = mid; } System.out.println((l+h)/2); } public static ArrayList<Pair> getEndpoints (double r) { ArrayList<Pair> endpoints = new ArrayList<>(); for (int i = 0;i<num;i++) { if (r*r-arr[i][1]*arr[i][1]<0) continue; endpoints.add(new Pair(arr[i][0]-Math.sqrt(r*r-arr[i][1]*arr[i][1]), arr[i][0]+Math.sqrt(r*r-arr[i][1]*arr[i][1]))); } return endpoints; } public static class Pair { double l; double r; public Pair (double l, double r) { this.l = l; this.r = r; } } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...