desislava_topuzakova

13. Сръбско Unleashed

May 27th, 2021
356
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.82 KB | None | 0 0
  1. package SetsAndMaps;
  2.  
  3. import java.util.*;
  4.  
  5. public class demo {
  6. public static void main(String[] args) {
  7. Scanner scanner = new Scanner (System.in);
  8.  
  9. LinkedHashMap<String, LinkedHashMap<String, Integer>> concerts = new LinkedHashMap<>();
  10.  
  11. String input = scanner.nextLine();
  12.  
  13. while(!input.equals("End")) {
  14. //Lepa Brena @Sunny Beach 25 3500
  15. if(!input.contains("@") || input.charAt(input.indexOf("@") - 1) != ' '){
  16. input = scanner.nextLine();
  17. continue;
  18. }
  19.  
  20. String singer = input.substring(0, input.indexOf("@") - 1);
  21. int firstIndexOfNumber = 0;
  22. //@Sunny Beach 25
  23. for (int i = input.indexOf("@"); i < input.length(); i++) {
  24. char currentSymbol = input.charAt(i);
  25. if(Character.isDigit(currentSymbol) && input.charAt(i - 1) == ' '){
  26. firstIndexOfNumber = i;
  27. break;
  28. }
  29. }
  30.  
  31. if(firstIndexOfNumber == 0) {
  32. input = scanner.nextLine();
  33. continue;
  34. }
  35.  
  36. String venue = input.substring(input.indexOf("@") + 1, firstIndexOfNumber - 1);
  37. String numbers = input.substring(firstIndexOfNumber);//"25 3000"
  38. String [] numbersArray = numbers.split("\\s+");
  39. if(numbersArray.length != 2) {
  40. input = scanner.nextLine();
  41. continue;
  42. }
  43. int price = Integer.parseInt(numbersArray[0]);
  44. int capacity = Integer.parseInt(numbersArray[1]);
  45.  
  46. //venue -> {singer -> price}
  47.  
  48. if (!concerts.containsKey(venue)) {
  49. LinkedHashMap<String, Integer> singers = new LinkedHashMap<>();
  50. singers.put(singer, price * capacity);
  51. concerts.put(venue, singers);
  52. } else {
  53. LinkedHashMap<String, Integer> currentSingers = concerts.get(venue);
  54. if (currentSingers.containsKey(singer)) {
  55. currentSingers.put(singer, currentSingers.get(singer) + price * capacity);
  56. } else {
  57. currentSingers.put(singer, price * capacity);
  58. }
  59.  
  60. concerts.put(venue, currentSingers);
  61. }
  62. input = scanner.nextLine();
  63. }
  64.  
  65. for (String venue : concerts.keySet()) {
  66. System.out.println(venue);
  67.  
  68. LinkedHashMap<String, Integer> singers = concerts.get(venue);
  69. singers.entrySet().stream().sorted((singer1, singer2) -> singer2.getValue().compareTo(singer1.getValue()))
  70. .forEach(singer -> System.out.println(String.format("# %s -> %d", singer.getKey(), singer.getValue())));
  71.  
  72. }
  73. }
  74.  
  75.  
  76.  
  77.  
  78. }
  79.  
Advertisement
Add Comment
Please, Sign In to add comment