Hackerrank’s Service Lane
May 29, 2014 Leave a comment
I am again posting code without asymtotic analysis. There is no standard algorithm used here. I believe this problem pertains to Range Minimum Query algorithm which I hope to explore.
It is ridiculous that the code to parse the input values is more complex than the actual brute-force algorithm. Should Hackerrank parse it for us ?
import java.io.*; import java.util.ArrayList; import java.util.Arrays; import java.util.Scanner; public class Solution { private int noOfTestCases; private ArrayList<Integer> widths = new ArrayList<>(); private ArrayList<Segment> tests = new ArrayList<>(); OutputStream outputStream = System.out; PrintWriter pw = new PrintWriter(new BufferedWriter(new OutputStreamWriter(outputStream))); public void getInput(BufferedReader br) throws IOException { Scanner s = null; int lengthHighway = 0; try { s = new Scanner(new BufferedReader(new InputStreamReader(System.in))); if (s.hasNextLine()) { String[] s1 = s.nextLine().split("\\s+"); lengthHighway = Integer.parseInt(s1[0]); noOfTestCases = Integer.parseInt(s1[1]); } if (s.hasNextLine()) { String[] s1 = s.nextLine().split("\\s+"); for( int i = 0 ; i < s1.length ; i ++){ widths.add( Integer.parseInt(s1[i]) ); } } while (s.hasNextLine()) { String[] s1 = s.nextLine().split("\\s+"); tests.add( new Segment(Integer.parseInt(s1[0]), Integer.parseInt(s1[1]) )); } } finally { s.close(); } } class Segment{ public final int entry,exit; public Segment(int entry, int exit) { this.entry = entry; this.exit = exit; } } public static void main( String... argv ) throws IOException { Solution rm = new Solution(); BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); rm.getInput(br); rm.fit(); } private void fit() { int[] vehicle = new int[]{1,2,3}; try { for( Segment test : tests){ Integer[] a = Arrays.copyOfRange(widths.toArray(new Integer[widths.size()]), test.entry, test.exit+1); Arrays.sort(a); pw.println(vehicle[a[0]-1]); pw.flush(); } }finally{ pw.close(); } } }