Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.io.*;
- import java.util.List;
- import java.util.stream.Collectors;
- import java.time.Duration;
- import java.time.LocalTime;
- import java.util.ArrayList;
- import java.util.Comparator;
- import java.util.List;
- class Driver implements Comparable<Driver> {
- public static int finalPos=0;
- private String name;
- private List<Lap> laps;
- public Driver(String name,List<Lap> laps) {
- this.name = name;
- this.laps = laps;
- }
- private Lap getFastestLap(){
- return laps.stream().min(Comparator.naturalOrder()).get();
- }
- public static Driver createDriver(String s) {
- String[] parts = s.split("\\s+");
- String name = parts[0];
- List<Lap> laps = new ArrayList<>();
- laps.add(new Lap(parts[1]));
- laps.add(new Lap(parts[2]));
- laps.add(new Lap(parts[3]));
- return new Driver(name,laps);
- }
- @Override
- public int compareTo(Driver o) {
- return (int)Long.compare(getFastestLap().getLocalTimeVersion().toNanoOfDay()
- ,o.getFastestLap().getLocalTimeVersion().toNanoOfDay());
- }
- @Override
- public String toString() {
- return String.format("%d. %-10s%10s",++finalPos,name,getFastestLap().getTime());
- }
- }
- class Lap implements Comparable<Lap>{
- private String time;
- public Lap(String time) {
- this.time = time;
- }
- public String getTime() {
- return time;
- }
- public LocalTime getLocalTimeVersion(){
- String[] parts= time.split(":");
- int minutes= Integer.parseInt(parts[0]);
- int seconds= Integer.parseInt(parts[1]);
- int nanos= Integer.parseInt(parts[2]);
- return LocalTime.of(0,minutes,seconds,nanos);
- }
- @Override
- public int compareTo(Lap o) {
- return (int)Long.compare(getLocalTimeVersion().toNanoOfDay(),o.getLocalTimeVersion().toNanoOfDay());
- }
- @Override
- public String toString() {
- return time+" "+getLocalTimeVersion();
- }
- }
- class F1Race {
- private List<Driver> drivers;
- public F1Race() {
- this.drivers = drivers;
- }
- public void readResults(InputStream in) {
- BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(in));
- this.drivers= bufferedReader.lines().map(i->Driver.createDriver(i)).collect(Collectors.toList());
- }
- public void printSorted(PrintStream out) {
- PrintWriter printWriter= new PrintWriter(out);
- this.drivers.stream().sorted().forEach(i->printWriter.println(i));
- printWriter.flush();
- }
- }
- public class F1Test {
- public static void main(String[] args) {
- F1Race f1Race = new F1Race();
- f1Race.readResults(System.in);
- f1Race.printSorted(System.out);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement