Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.io.*;
- import java.time.LocalTime;
- import java.util.List;
- import java.util.stream.Collectors;
- Runner implements Comparable<Runner>{
- private int id;
- private LocalTime start;
- private LocalTime finish;
- public Runner(int id, LocalTime start, LocalTime finish) {
- this.id = id;
- this.start = start;
- this.finish = finish;
- }
- public LocalTime getChipTime(){
- return finish.minusHours(start.getHour()).minusMinutes(start.getMinute()).minusSeconds(start.getSecond());
- }
- public int getChipTimeInSeconds(){
- return finish.minusHours(start.getHour()).minusMinutes(start.getMinute()).minusSeconds(start.getSecond()).toSecondOfDay();
- }
- public static Runner create(String s){
- String[] parts= s.split("\\s+");
- int id= Integer.parseInt(parts[0]);
- LocalTime start= LocalTime.parse(parts[1]);
- LocalTime finish= LocalTime.parse(parts[2]);
- return new Runner(id,start,finish);
- }
- @Override
- public int compareTo(Runner o) {
- return Integer.compare(this.getChipTimeInSeconds(),o.getChipTimeInSeconds());
- }
- @Override
- public String toString() {
- return String.format("%d %s",id,getChipTime());
- }
- }
- class TeamRace {
- private List<Runner> runners;
- public static void findBestTeam(InputStream in, PrintStream out) {
- BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(in));
- List<Runner> runners= bufferedReader.lines().map(i->Runner.create(i)).collect(Collectors.toList());
- PrintWriter printWriter = new PrintWriter(out);
- runners.stream().sorted().limit(4).forEach(i->printWriter.println(i));
- printWriter.println(LocalTime.ofSecondOfDay(runners.stream().sorted().limit(4).mapToInt(i-> i.getChipTimeInSeconds()).sum()));
- printWriter.flush();
- }
- }
- public class RaceTest {
- public static void main(String[] args) {
- TeamRace.findBestTeam(System.in, System.out);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement