Advertisement
dzocesrce

[NP] Skopje Marathon

Apr 14th, 2025
290
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.02 KB | None | 0 0
  1. import java.io.*;
  2. import java.time.LocalTime;
  3. import java.util.List;
  4. import java.util.stream.Collectors;
  5.  
  6. Runner implements Comparable<Runner>{
  7.     private int id;
  8.     private LocalTime start;
  9.     private LocalTime finish;
  10.  
  11.     public Runner(int id, LocalTime start, LocalTime finish) {
  12.         this.id = id;
  13.         this.start = start;
  14.         this.finish = finish;
  15.     }
  16.  
  17.     public LocalTime getChipTime(){
  18.         return finish.minusHours(start.getHour()).minusMinutes(start.getMinute()).minusSeconds(start.getSecond());
  19.     }
  20.  
  21.     public int getChipTimeInSeconds(){
  22.         return finish.minusHours(start.getHour()).minusMinutes(start.getMinute()).minusSeconds(start.getSecond()).toSecondOfDay();
  23.     }
  24.  
  25.     public static Runner create(String s){
  26.         String[] parts= s.split("\\s+");
  27.         int id= Integer.parseInt(parts[0]);
  28.         LocalTime start= LocalTime.parse(parts[1]);
  29.         LocalTime finish= LocalTime.parse(parts[2]);
  30.         return new Runner(id,start,finish);
  31.     }
  32.  
  33.     @Override
  34.     public int compareTo(Runner o) {
  35.         return Integer.compare(this.getChipTimeInSeconds(),o.getChipTimeInSeconds());
  36.     }
  37.  
  38.     @Override
  39.     public String toString() {
  40.         return String.format("%d %s",id,getChipTime());
  41.     }
  42. }
  43.  
  44. class TeamRace {
  45.     private List<Runner> runners;
  46.  
  47.     public static void findBestTeam(InputStream in, PrintStream out) {
  48.         BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(in));
  49.         List<Runner> runners= bufferedReader.lines().map(i->Runner.create(i)).collect(Collectors.toList());
  50.  
  51.         PrintWriter printWriter = new PrintWriter(out);
  52.         runners.stream().sorted().limit(4).forEach(i->printWriter.println(i));
  53.         printWriter.println(LocalTime.ofSecondOfDay(runners.stream().sorted().limit(4).mapToInt(i-> i.getChipTimeInSeconds()).sum()));
  54.  
  55.  
  56.         printWriter.flush();
  57.     }
  58. }
  59.  
  60.  
  61. public class RaceTest {
  62.     public static void main(String[] args) {
  63.         TeamRace.findBestTeam(System.in, System.out);
  64.     }
  65. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement