DamSi

Untitled

Aug 17th, 2015
209
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.33 KB | None | 0 0
  1. import java.io.InputStream;
  2. import java.io.OutputStream;
  3. import java.io.PrintWriter;
  4. import java.util.ArrayList;
  5. import java.util.Collections;
  6. import java.util.List;
  7. import java.util.Scanner;
  8.  
  9. public class F1Test {
  10.  
  11.     public static void main(String[] args) {
  12.         F1Race f1Race = new F1Race();
  13.         f1Race.readResults(System.in);
  14.         f1Race.printSorted(System.out);
  15.     }
  16.  
  17. }
  18. class F1Race {
  19.     private List<Driver> drivers;
  20.  
  21.     public F1Race() {
  22.         drivers = new ArrayList<Driver>();
  23.     }
  24.  
  25.     void readResults(InputStream inputStream) {
  26.         Scanner input = new Scanner(inputStream);
  27.         while (input.hasNext()) {
  28.             String line = input.nextLine();
  29.             String[] parts = line.split(" ");
  30.             String name = parts[0];
  31.             Driver driver = new Driver(name, Driver.stringToTime(parts[1]), Driver.stringToTime(parts[2]),
  32.                     Driver.stringToTime(parts[3]));
  33.             drivers.add(driver);
  34.         }
  35.     }
  36.  
  37.     void printSorted(OutputStream outputStream) {
  38.         PrintWriter writer = new PrintWriter(outputStream);
  39.         Collections.sort(drivers);
  40.         int i = 0;
  41.         for (Driver driver : drivers) {
  42.             ++i;
  43.             writer.println(String.format("%d. %s",i,driver));
  44.         }
  45.         writer.flush();
  46.         writer.close();
  47.     }
  48. }
  49.  
  50. class Driver implements Comparable<Driver> {
  51.     private String name;
  52.     private int lap1;
  53.     private int lap2;
  54.     private int lap3;
  55.     private int best;
  56.  
  57.     public Driver(String name, int lap1, int lap2, int lap3) {
  58.         this.name = name;
  59.         this.lap1 = lap1;
  60.         this.lap2 = lap2;
  61.         this.lap3 = lap3;
  62.         this.best = Math.min(Math.min(lap1, lap2), lap3);
  63.     }
  64.  
  65.     public static int stringToTime(String time) {
  66.         String[] parts = time.split(":");
  67.         int min = Integer.parseInt(parts[0]) * 60 * 1000;
  68.         int sec = Integer.parseInt(parts[1]) * 1000;
  69.         int ms = Integer.parseInt(parts[2]) % 1000;
  70.         return min + sec + ms;
  71.     }
  72.  
  73.     public static String timeToString(int time) {
  74.         int minutes = (time / 1000) / 60;
  75.         // se deli so 1000 pa so 60 za da dobijat minuti
  76.         int sec = (time - minutes * 60 * 1000) / 1000;
  77.         // se odzemaat minutite pa se deli so 1000 da se dobijat sekundi
  78.         int ms = time % 1000; // ostatokot se milisekundi
  79.         return String.format("%d:%02d:%03d", minutes, sec, ms);
  80.     }
  81.  
  82.     @Override
  83.     public int compareTo(Driver o) {
  84.         return Integer.compare(best, o.best);
  85.     }
  86.  
  87.     @Override
  88.     public String toString() {
  89.         return String.format("%-10s%10s", name, timeToString(best));
  90.     }
  91. }
Advertisement
Add Comment
Please, Sign In to add comment