Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package AssociativeArrays;
- import java.util.*;
- import java.util.concurrent.atomic.AtomicInteger;
- import java.util.stream.Stream;
- public class Judge {
- public static void main(String[] args) {
- Scanner scanner = new Scanner(System.in);
- Map<String, TreeMap<String, Integer>> contestsUsers = new LinkedHashMap<>();
- Map<String, Integer> usersPoints = new TreeMap<>();
- String input = scanner.nextLine();
- while (!input.equals("no more time")) {
- String[] tokens = input.split(" -> ");
- String user = tokens[0];
- String contest = tokens[1];
- int points = Integer.parseInt(tokens[2]);
- if (contestsUsers.containsKey(contest)) {
- if (!contestsUsers.get(contest).containsKey(user)) {
- contestsUsers.get(contest).put(user, points);
- if (!usersPoints.containsKey(user)) {
- usersPoints.put(user, points);
- } else {
- usersPoints.put(user, points + usersPoints.get(user));
- }
- } else if (contestsUsers.get(contest).containsKey(user)) {
- if (contestsUsers.get(contest).get(user) < points) {
- int curr = points - contestsUsers.get(contest).get(user);
- contestsUsers.get(contest).put(user, points);
- usersPoints.put(user, curr + usersPoints.get(user));
- }
- }
- } else {
- TreeMap<String, Integer> newStudent = new TreeMap<>();
- newStudent.put(user, points);
- contestsUsers.put(contest, newStudent);
- if (usersPoints.containsKey(user)) {
- usersPoints.put(user, usersPoints.get(user) + points);
- } else {
- usersPoints.put(user, points);
- }
- }
- input = scanner.nextLine();
- }
- AtomicInteger count=new AtomicInteger(1);
- contestsUsers.forEach((key,value)->{
- System.out.printf("%s: %d participants%n",key,contestsUsers.get(key).size());
- count.set(1);
- value.entrySet().stream()
- .sorted((a,b)->b.getValue().compareTo(a.getValue()))
- .forEach(e-> {
- System.out.printf("%d. %s <::> %d%n",count.getAndIncrement(),e.getKey(),e.getValue());
- });
- });
- System.out.println("Individual standings:");
- AtomicInteger count2=new AtomicInteger(1);
- usersPoints.entrySet()
- .stream()
- .sorted((a,b)->b.getValue().compareTo(a.getValue()))
- .forEach(e-> System.out.printf("%d. %s -> %d%n",count2.getAndIncrement(),e.getKey(),e.getValue()));
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement