Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.io.InputStream;
- import java.io.OutputStream;
- import java.io.PrintWriter;
- import java.util.ArrayList;
- import java.util.Collections;
- import java.util.List;
- import java.util.Scanner;
- public class F1Test {
- public static void main(String[] args) {
- F1Race f1Race = new F1Race();
- f1Race.readResults(System.in);
- f1Race.printSorted(System.out);
- }
- }
- class F1Race {
- private List<Driver> drivers;
- public F1Race() {
- drivers = new ArrayList<Driver>();
- }
- void readResults(InputStream inputStream) {
- Scanner input = new Scanner(inputStream);
- while (input.hasNext()) {
- String line = input.nextLine();
- String[] parts = line.split(" ");
- String name = parts[0];
- Driver driver = new Driver(name, Driver.stringToTime(parts[1]), Driver.stringToTime(parts[2]),
- Driver.stringToTime(parts[3]));
- drivers.add(driver);
- }
- }
- void printSorted(OutputStream outputStream) {
- PrintWriter writer = new PrintWriter(outputStream);
- Collections.sort(drivers);
- int i = 0;
- for (Driver driver : drivers) {
- ++i;
- writer.println(String.format("%d. %s",i,driver));
- }
- writer.flush();
- writer.close();
- }
- }
- class Driver implements Comparable<Driver> {
- private String name;
- private int lap1;
- private int lap2;
- private int lap3;
- private int best;
- public Driver(String name, int lap1, int lap2, int lap3) {
- this.name = name;
- this.lap1 = lap1;
- this.lap2 = lap2;
- this.lap3 = lap3;
- this.best = Math.min(Math.min(lap1, lap2), lap3);
- }
- public static int stringToTime(String time) {
- String[] parts = time.split(":");
- int min = Integer.parseInt(parts[0]) * 60 * 1000;
- int sec = Integer.parseInt(parts[1]) * 1000;
- int ms = Integer.parseInt(parts[2]) % 1000;
- return min + sec + ms;
- }
- public static String timeToString(int time) {
- int minutes = (time / 1000) / 60;
- // se deli so 1000 pa so 60 za da dobijat minuti
- int sec = (time - minutes * 60 * 1000) / 1000;
- // se odzemaat minutite pa se deli so 1000 da se dobijat sekundi
- int ms = time % 1000; // ostatokot se milisekundi
- return String.format("%d:%02d:%03d", minutes, sec, ms);
- }
- @Override
- public int compareTo(Driver o) {
- return Integer.compare(best, o.best);
- }
- @Override
- public String toString() {
- return String.format("%-10s%10s", name, timeToString(best));
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment