Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.io.BufferedReader;
- import java.io.IOException;
- import java.io.InputStreamReader;
- import java.util.HashMap;
- import java.util.LinkedHashMap;
- import java.util.Map;
- import java.util.stream.Collectors;
- public class test {
- public static void main(String[] args) throws IOException {
- BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
- LinkedHashMap<String, LinkedHashMap<String, Long>> playersScores = new LinkedHashMap<>();
- String line = reader.readLine();
- Integer id = 0;
- while(!line.equalsIgnoreCase("osu!")){
- String[] opponents = line.split("<->");
- String firstPlayer = opponents[0].split("\\s+")[1];
- String secondPlayer = opponents[1].split("\\s+")[0];
- Long firstScore = Long.valueOf(opponents[0].split("\\s+")[0]);
- Long secondScore = Long.valueOf(opponents[1].split("\\s+")[1]);
- if (!playersScores.containsKey(firstPlayer)) {
- playersScores.put(firstPlayer, new LinkedHashMap<>());
- }
- id++;
- playersScores.get(firstPlayer).put(secondPlayer+"("+id+")", firstScore - secondScore);
- if (!playersScores.containsKey(secondPlayer)) {
- playersScores.put(secondPlayer, new LinkedHashMap<>());
- }
- playersScores.get(secondPlayer).put(firstPlayer+"("+id+")", secondScore - firstScore);
- id++;
- line = reader.readLine();
- }
- playersScores = playersScores.entrySet().stream().sorted((a,b) -> {
- Long firstScore = getAllScores(a.getValue());
- Long secondScore = getAllScores(b.getValue());
- return Long.compare(secondScore, firstScore);
- }).collect(Collectors.toMap(Map.Entry::getKey,Map.Entry::getValue,(oldValue, newValue)->oldValue, LinkedHashMap::new));
- for (Map.Entry<String, LinkedHashMap<String, Long>> player : playersScores.entrySet()) {
- System.out.printf("%s - (%d)%n",player.getKey(), getAllScores(player.getValue()));
- for (Map.Entry<String,Long> oponent : player.getValue().entrySet()) {
- System.out.printf("* %s <-> %d%n",oponent.getKey().substring(0,oponent.getKey().indexOf("(")), oponent.getValue());
- }
- }
- }
- private static Long getAllScores(LinkedHashMap<String, Long> map){
- Long result = 0L;
- for (Long integer : map.values()) {
- result += integer;
- }
- return result;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement