Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.*;
- public class Ranking {
- public static void main(String[] args) {
- Scanner scanner = new Scanner(System.in);
- Map<String, String> passwordMap = new LinkedHashMap<>();
- Map<String, Map<String, Integer>> userPointMap = new TreeMap<>();
- String input = scanner.nextLine();
- while (!"end of contests".equals(input)) {
- String[] element = input.split(":");
- String contest = element[0];
- String password = element[1];
- passwordMap.putIfAbsent(contest, password);
- input = scanner.nextLine();
- }
- input = scanner.nextLine();
- while (!"end of submissions".equals(input)) {
- String[] element = input.split("=>");
- String contest = element[0];
- String password = element[1];
- String name = element[2];
- int points = Integer.parseInt(element[3]);
- if (passwordMap.containsKey(contest) && passwordMap.containsValue(password)) {
- userPointMap.putIfAbsent(name, new LinkedHashMap<>());
- Map<String, Integer> contestAndPoints = userPointMap.get(name);
- contestAndPoints.putIfAbsent(contest, 0);
- if (points > userPointMap.get(name).get(contest)) {
- contestAndPoints.put(contest, points);
- }
- }
- input = scanner.nextLine();
- }
- int bestSum = 0;
- for (Map.Entry<String, Map<String, Integer>> bestUser : userPointMap.entrySet()) {
- int sum = bestUser.getValue().values().stream().mapToInt(u -> u).sum();
- if (sum > bestSum) {
- bestSum = sum;
- }
- }
- for (Map.Entry<String, Map<String, Integer>> bestUser : userPointMap.entrySet()) {
- if (bestUser.getValue()
- .values()
- .stream()
- .mapToInt(u -> u)
- .sum() == bestSum) {
- System.out.printf("Best candidate is %s with total %d points.%n",
- bestUser.getKey(), bestSum);
- }
- }
- System.out.println("Ranking: ");
- userPointMap
- .forEach((key, value) -> {
- System.out.printf("%s%n", key);
- value.entrySet()
- .stream()
- .sorted((c, p) -> p.getValue() - c.getValue())
- .forEach(u -> System.out.printf("# %s -> %d%n", u.getKey(), u.getValue()));
- });
- }
- }
Add Comment
Please, Sign In to add comment