Advertisement
CuBG

Untitled

May 19th, 2023
762
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.78 KB | Software | 0 0
  1. import java.util.LinkedHashMap;
  2. import java.util.Map;
  3. import java.util.Scanner;
  4. import java.util.regex.Matcher;
  5. import java.util.regex.Pattern;
  6.  
  7. public class _12_SrybskoUnleashed {
  8.     public static void main(String[] args) {
  9.         Scanner sc = new Scanner(System.in);
  10.  
  11.         String regex = "\\b(?<singer>[A-Za-z]+\\s*[A-Za-z]*\\s*[A-Za-z]*) @(?<venue>[A-Za-z]+\\s*[A-Za-z]*\\s*[A-Za-z]*) (?<ticketPrice>[0-9]+) (?<count>[0-9]+)\\b";
  12.         Pattern pattern = Pattern.compile(regex);
  13.  
  14.         Map<String, Map<String, Integer>> venueRevenue = new LinkedHashMap<>();
  15.  
  16.         String input = sc.nextLine();
  17.         while (!"End".equals(input)) {
  18.             Matcher matcher = pattern.matcher(input);
  19.  
  20.             String singer;
  21.             String venue;
  22.             int ticketPrice;
  23.             int numberOfTickets;
  24.  
  25.             if (matcher.find()) {
  26.                 singer = matcher.group("singer");
  27.                 venue = matcher.group("venue");
  28.                 ticketPrice = Integer.parseInt(matcher.group("ticketPrice"));
  29.                 numberOfTickets = Integer.parseInt(matcher.group("count"));
  30.  
  31.                 venueRevenue.putIfAbsent(venue, new LinkedHashMap<>());
  32.                 venueRevenue.get(venue).putIfAbsent(singer, 0);
  33.                 venueRevenue.get(venue).put(singer, venueRevenue.get(venue).get(singer) + ticketPrice * numberOfTickets);
  34.             }
  35.             input = sc.nextLine();
  36.         }
  37.         venueRevenue.forEach((key, value) -> {
  38.             System.out.println(key);
  39.             value.entrySet()
  40.                     .stream()
  41.                     .sorted((e1, e2) -> e2.getValue().compareTo(e1.getValue()))
  42.                     .forEach(singer -> System.out.printf("#  %s -> %d%n", singer.getKey(), singer.getValue()));
  43.         });
  44.     }
  45. }
  46.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement