Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.*;
- import java.util.regex.Matcher;
- import java.util.regex.Pattern;
- public class SerbianUnleashed {
- public static void main(String[] args) {
- Scanner scanner = new Scanner(System.in);
- String line = scanner.nextLine();
- Map<String, Map<String, Long>> venuesWithSingersWithIncome = new LinkedHashMap<>();
- //String regex2 = "^(?<singer>[\\w\\s]+)\\s@(?<venue>[\\w\\s]+)\\s(?<price>\\d+)\\s(?<count>\\d+)$";
- while (!line.equals("End")) {
- //if (inputIsValid(line)) {
- String regex =
- "(?<singer>[A-Za-z0-9 ]+ ?){1,3} @(?<venue>[A-Za-z0-9 ]+ ?){1,3} (?<price>\\d+) (?<count>\\d+)";
- Pattern pattern = Pattern.compile(regex);
- Matcher matcher = pattern.matcher(line);
- if (matcher.find()) {
- String singer = matcher.group("singer");
- String venue = matcher.group("venue");
- int price = Integer.parseInt(matcher.group("price"));
- int count = Integer.parseInt(matcher.group("count"));
- long totalIncome = price * count;
- if (!venuesWithSingersWithIncome.containsKey(venue)) {
- venuesWithSingersWithIncome.put(venue, new LinkedHashMap<>());
- venuesWithSingersWithIncome.get(venue).put(singer, totalIncome);
- } else if (!venuesWithSingersWithIncome.get(venue).containsKey(singer)) {
- venuesWithSingersWithIncome.get(venue).put(singer, totalIncome);
- } else {
- venuesWithSingersWithIncome.get(venue)
- .put(singer, venuesWithSingersWithIncome.get(venue).get(singer) + totalIncome);
- }
- /*venuesWithSingers.putIfAbsent(venue, new ArrayList<>());
- venuesWithSingers.get(venue).add(singer);
- singersWithIncome.putIfAbsent(singer, totalIncome);
- singersWithIncome.put(singer, singersWithIncome.get(singer) + totalIncome);*/
- //}
- }
- line = scanner.nextLine();
- }
- //#{2*space}{singer}{space}->{space}{total money}
- venuesWithSingersWithIncome.forEach((key, value) -> {
- System.out.println(key);
- value.entrySet()
- .stream()
- .sorted((f, s) -> {
- long result = s.getValue() - f.getValue();
- return (int) result;
- })
- .forEach(e -> {
- System.out.printf("# %s -> %d%n", e.getKey(), e.getValue());
- });
- });
- }
- /*private static boolean inputIsValid(String line) {
- boolean isValid = false;
- String regex = "(?<singer>[A-Za-z0-9 ]+ ?){1,3} @(?<venue>[A-Za-z0-9 ]+ ?){1,3} (?<price>\\d+) (?<count>\\d+)";
- Pattern pattern = Pattern.compile(regex);
- Matcher matcher = pattern.matcher(line);
- if (matcher.find()) {
- isValid = true;
- }
- return isValid;
- }*/
- }
Add Comment
Please, Sign In to add comment