Advertisement
add1ctus

F1Driver

Nov 13th, 2015
169
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.67 KB | None | 0 0
  1. import java.io.IOException;
  2. import java.io.InputStream;
  3. import java.io.OutputStream;
  4. import java.io.PrintWriter;
  5. import java.nio.charset.Charset;
  6. import java.util.Scanner;
  7.  
  8. public class F1Test {
  9.  
  10.     public static void main(String[] args) {
  11.         F1Race f1Race = new F1Race();
  12.         f1Race.readResults(System.in);
  13.         f1Race.printSorted(System.out);
  14.     }
  15.  
  16. }
  17.  
  18. class LapTime
  19. {
  20.     private int minutes;
  21.     private int seconds;
  22.     private int miliseconds;
  23.    
  24.     public LapTime(String input)
  25.     {
  26.         minutes = Integer.parseInt(input.substring(0,1));
  27.         seconds = Integer.parseInt(input.substring(2,4));
  28.         miliseconds = Integer.parseInt(input.substring(5,8));
  29.     }
  30.    
  31.     public String toString()
  32.     {
  33.         return String.format("%d:%02d:%03d", minutes,seconds,miliseconds);
  34.     }
  35.    
  36.     public Integer returnRawTime()
  37.     {
  38.         return miliseconds + 1000*seconds + 60000*minutes;
  39.     }
  40. }
  41.  
  42. class F1Driver
  43. {
  44.     private String name;
  45.     private LapTime l1,l2,l3,best;
  46.    
  47.     public F1Driver(String n, LapTime lap1, LapTime lap2, LapTime lap3)
  48.     {
  49.         name = n;
  50.         l1 = lap1;
  51.         best = l1;
  52.         l2 = lap2;
  53.         if(l2.returnRawTime() < best.returnRawTime())
  54.             best = l2;
  55.         l3 = lap3;
  56.         if(l3.returnRawTime() < best.returnRawTime())
  57.             best = l3;
  58.     }
  59.    
  60.     public LapTime getBestLap()
  61.     {
  62.         return best;
  63.     }
  64.    
  65.     public int compareTo(F1Driver pero)
  66.     {
  67.         return best.returnRawTime().compareTo(pero.getBestLap().returnRawTime());
  68.     }
  69.    
  70.     public String toString()
  71.     {
  72.         return String.format("%-10s%10s", name,best.toString());
  73.     }
  74. }
  75.  
  76. class F1Race {
  77.     private F1Driver[] drivers;
  78.     int length;
  79.    
  80.     private void resize()
  81.     {
  82.         F1Driver[] temp = new F1Driver[length];
  83.         for(int i = 0 ; i < length ; ++i)
  84.             temp[i] = drivers[i];
  85.         drivers = new F1Driver[length*2];
  86.         for(int i = 0 ; i < length ; ++i)
  87.             drivers[i] = temp[i];
  88.     }
  89.    
  90.     public F1Race()
  91.     {
  92.         drivers = new F1Driver[1];
  93.         length = 0;
  94.     }
  95.    
  96.     public void readResults(InputStream inputStream)
  97.     {
  98.         Scanner in = new Scanner(inputStream);
  99.        
  100.         while(in.hasNext())
  101.         {
  102.             String n = in.next();
  103.             String l1 = in.next();
  104.             String l2 = in.next();
  105.             String l3 = in.next();
  106.             if(length == drivers.length)
  107.                 resize();
  108.             drivers[length++] = new F1Driver(n,new LapTime(l1),new LapTime(l2),new LapTime(l3));
  109.         }
  110.        
  111.         in.close();
  112.     }
  113.    
  114.     void printSorted(OutputStream outputStream)
  115.     {
  116.         for(int i = 0 ; i < length ; ++i)
  117.             for(int j = i+1 ; j < length ; ++j)
  118.                 if(drivers[i].compareTo(drivers[j]) > 0)
  119.                 {
  120.                     F1Driver temp = drivers[i];
  121.                     drivers[i] = drivers[j];
  122.                     drivers[j] = temp;
  123.                 }
  124.         PrintWriter pw = new PrintWriter(outputStream);
  125.         for(int i = 0 ; i < length ; ++i)
  126.             pw.println((i+1) + ". " + drivers[i].toString());
  127.         pw.close();
  128.     }
  129.    
  130. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement