Submission #1546227
Source Code Expand
import java.io.*; import java.util.*; public class Main { public static void main(String[] args)throws Throwable { MyScanner sc=new MyScanner(); PrintWriter pw=new PrintWriter(System.out); int x1=sc.nextInt(); int y1=sc.nextInt(); int x2=sc.nextInt(); int y2=sc.nextInt(); boolean neg=false; if((Math.min(x1, x2)==x1) !=(Math.min(y1, y2)==y1)) neg=true; if(neg){ x1*=(-1); x2*=(-1); } int minX=Math.min(x1, x2); int maxX=Math.max(x1, x2); int minY=Math.min(y1, y2); int maxY=Math.max(y1, y2); int n=sc.nextInt(); int [] x=new int [n]; int [] y=new int [n]; TreeMap<Integer, Integer> mapX=new TreeMap<Integer, Integer>(); TreeMap<Integer, Integer> mapY=new TreeMap<Integer, Integer>(); for(int i=0;i<n;i++){ x[i]=sc.nextInt(); if(neg) x[i]*=(-1); y[i]=sc.nextInt(); mapX.put(x[i], y[i]); mapY.put(y[i], x[i]); } double circ=Math.PI*20; double init=100.0*(maxX-minX+maxY-minY); double op1=init,op2=init; if(mapX.containsKey(minX)){ int tmp=mapX.get(minX); if(tmp>minY && tmp<maxY) op1+=(circ/2-20); if(tmp==maxY) op1+=(circ/4-20); } if(mapY.containsKey(maxY)){ int tmp=mapY.get(maxY); if(tmp>minX && tmp<maxX) op1+=(circ/2-20); } if(mapX.containsKey(maxX)){ int tmp=mapX.get(maxX); if(tmp>minY && tmp<maxY) op2+=(circ/2-20); if(tmp==minY) op2+=(circ/4-20); } if(mapY.containsKey(minY)){ int tmp=mapY.get(minY); if(tmp>minX && tmp<maxX) op2+=(circ/2-20); } double dis=Math.min(op1, op2); ArrayList<pair> arr=new ArrayList<pair>(); for(int i=0;i<n;i++) if(x[i]>=minX && x[i]<=maxX && y[i]>=minY && y[i]<=maxY){ arr.add(new pair(x[i], y[i])); } Collections.sort(arr); int [] a=new int [arr.size()]; for(int i=0;i<a.length;i++) a[i]=arr.get(i).y; int l=lis(a, a.length); if(minX!=maxX && minY!=maxY){ if(l==maxY-minY+1 || l==maxX-minX+1) dis=Math.min(dis, init-l*(20-circ/4)+circ/4); else dis=Math.min(dis, init-l*(20-circ/4)); } pw.println(dis); pw.flush(); pw.close(); } static class pair implements Comparable<pair>{ int x,y; pair(int a,int b){ x=a; y=b; } public int compareTo(pair o) { return x-o.x; } } public static int lis(int [] a,int n){ ArrayList<Integer> l=new ArrayList<Integer>(); for(int i=0;i<n;i++){ int pos=Collections.binarySearch(l, a[i]); if(pos<0) pos=-(pos+1); if(pos>=l.size()) l.add(a[i]); else l.set(pos, a[i]); } return l.size(); } static class MyScanner { BufferedReader br; StringTokenizer st; public MyScanner() { br = new BufferedReader(new InputStreamReader(System.in)); } String next() {while (st == null || !st.hasMoreElements()) { try {st = new StringTokenizer(br.readLine());} catch (IOException e) {e.printStackTrace();}} return st.nextToken();} int nextInt() {return Integer.parseInt(next());} long nextLong() {return Long.parseLong(next());} double nextDouble() {return Double.parseDouble(next());} String nextLine(){String str = ""; try {str = br.readLine();} catch (IOException e) {e.printStackTrace();} return str;} } }
Submission Info
Submission Time | |
---|---|
Task | C - Fountain Walk |
User | Kharouba |
Language | Java8 (OpenJDK 1.8.0) |
Score | 900 |
Code Size | 3299 Byte |
Status | AC |
Exec Time | 784 ms |
Memory | 104768 KB |
Judge Result
Set Name | Sample | All | ||||
---|---|---|---|---|---|---|
Score / Max Score | 0 / 0 | 900 / 900 | ||||
Status |
|
|
Set Name | Test Cases |
---|---|
Sample | sample_01.txt, sample_02.txt, sample_03.txt |
All | sample_01.txt, sample_02.txt, sample_03.txt, sample_01.txt, sample_02.txt, sample_03.txt, subtask_1_01.txt, subtask_1_02.txt, subtask_1_03.txt, subtask_1_04.txt, subtask_1_05.txt, subtask_1_06.txt, subtask_1_07.txt, subtask_1_08.txt, subtask_1_09.txt, subtask_1_10.txt, subtask_1_11.txt, subtask_1_12.txt, subtask_1_13.txt, subtask_1_14.txt, subtask_1_15.txt, subtask_1_16.txt, subtask_1_17.txt, subtask_1_18.txt, subtask_1_19.txt, subtask_1_20.txt, subtask_1_21.txt, subtask_1_22.txt, subtask_1_23.txt, subtask_1_24.txt, subtask_1_25.txt, subtask_1_26.txt, subtask_1_27.txt, subtask_1_28.txt, subtask_1_29.txt, subtask_1_30.txt, subtask_1_31.txt, subtask_1_32.txt, subtask_1_33.txt, subtask_1_34.txt, subtask_1_35.txt, subtask_1_36.txt, subtask_1_37.txt, subtask_1_38.txt, subtask_1_39.txt, subtask_1_40.txt, subtask_1_41.txt |
Case Name | Status | Exec Time | Memory |
---|---|---|---|
sample_01.txt | AC | 72 ms | 21588 KB |
sample_02.txt | AC | 73 ms | 16980 KB |
sample_03.txt | AC | 72 ms | 18772 KB |
subtask_1_01.txt | AC | 73 ms | 19540 KB |
subtask_1_02.txt | AC | 72 ms | 18516 KB |
subtask_1_03.txt | AC | 71 ms | 17876 KB |
subtask_1_04.txt | AC | 69 ms | 19412 KB |
subtask_1_05.txt | AC | 71 ms | 22996 KB |
subtask_1_06.txt | AC | 80 ms | 19284 KB |
subtask_1_07.txt | AC | 71 ms | 17620 KB |
subtask_1_08.txt | AC | 78 ms | 19284 KB |
subtask_1_09.txt | AC | 287 ms | 44536 KB |
subtask_1_10.txt | AC | 406 ms | 62276 KB |
subtask_1_11.txt | AC | 231 ms | 38128 KB |
subtask_1_12.txt | AC | 738 ms | 102288 KB |
subtask_1_13.txt | AC | 427 ms | 68068 KB |
subtask_1_14.txt | AC | 279 ms | 44736 KB |
subtask_1_15.txt | AC | 202 ms | 36148 KB |
subtask_1_16.txt | AC | 784 ms | 101720 KB |
subtask_1_17.txt | AC | 377 ms | 57992 KB |
subtask_1_18.txt | AC | 333 ms | 53904 KB |
subtask_1_19.txt | AC | 335 ms | 56232 KB |
subtask_1_20.txt | AC | 765 ms | 103844 KB |
subtask_1_21.txt | AC | 773 ms | 103628 KB |
subtask_1_22.txt | AC | 784 ms | 100044 KB |
subtask_1_23.txt | AC | 776 ms | 102412 KB |
subtask_1_24.txt | AC | 70 ms | 23380 KB |
subtask_1_25.txt | AC | 70 ms | 17748 KB |
subtask_1_26.txt | AC | 72 ms | 16980 KB |
subtask_1_27.txt | AC | 70 ms | 21204 KB |
subtask_1_28.txt | AC | 513 ms | 81436 KB |
subtask_1_29.txt | AC | 534 ms | 84344 KB |
subtask_1_30.txt | AC | 748 ms | 91984 KB |
subtask_1_31.txt | AC | 476 ms | 83044 KB |
subtask_1_32.txt | AC | 577 ms | 104768 KB |
subtask_1_33.txt | AC | 474 ms | 83592 KB |
subtask_1_34.txt | AC | 504 ms | 81724 KB |
subtask_1_35.txt | AC | 526 ms | 91568 KB |
subtask_1_36.txt | AC | 564 ms | 91748 KB |
subtask_1_37.txt | AC | 630 ms | 100748 KB |
subtask_1_38.txt | AC | 602 ms | 100216 KB |
subtask_1_39.txt | AC | 587 ms | 93620 KB |
subtask_1_40.txt | AC | 547 ms | 92012 KB |
subtask_1_41.txt | AC | 531 ms | 91288 KB |