Advertisement
Guest User

Events

a guest
Mar 23rd, 2016
149
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.96 KB | None | 0 0
  1. import java.util.ArrayList;
  2. import java.util.Scanner;
  3. import java.util.TreeMap;
  4. import java.util.TreeSet;
  5. import java.util.regex.Matcher;
  6. import java.util.regex.Pattern;
  7.  
  8. public class Events {
  9.     public static void main(String[] args) {
  10.         Scanner scn = new Scanner(System.in);
  11.         int lines = Integer.parseInt(scn.nextLine());
  12.         Pattern pat = Pattern.compile("(#[a-zA-Z]+:)\\s*?(@[a-zA-Z]+)\\s*?(\\d+:\\d+)");
  13.         TreeMap<String, TreeMap<String, ArrayList<String>>> locations = new TreeMap<>();
  14.         while (lines > 0) {
  15.             String line = scn.nextLine();
  16.             Matcher match = pat.matcher(line);
  17.             String location = "";
  18.             String name = "";
  19.             String time = "";
  20.             if (match.find()) {
  21.                 name = match.group(1).substring(1, match.group(1).length() - 1);
  22.                 location = match.group(2).substring(1, match.group(2).length());
  23.                 time = match.group(3);
  24.             }
  25.             if ((location.equals("") || name.equals("")) || time.equals("")) {
  26.                 lines--;
  27.                 continue;
  28.             }
  29.             int hours = Integer.parseInt(time.substring(0,2));
  30.             int minutes = Integer.parseInt(time.substring(3,5));
  31.             if(hours>23||minutes>59){
  32.                 lines--;
  33.                 continue;
  34.             }
  35.             TreeMap<String, ArrayList<String>> names = new TreeMap<>();
  36.             if (locations.containsKey(location)) {
  37.                 names = locations.get(location);
  38.                 if (!names.containsKey(name)) {
  39.                     names.put(name, new ArrayList<>());
  40.                 }
  41.                 names.get(name).add(time);
  42.             } else {
  43.                 ArrayList<String> list = new ArrayList<>();
  44.                 list.add(time);
  45.                 names.put(name, list);
  46.                 locations.put(location, names);
  47.             }
  48.             lines--;
  49.         }
  50.         String[] line = scn.nextLine().split(",");
  51.         TreeSet<String> demands = new TreeSet<>();
  52.         for (int i = 0; i < line.length; i++) {
  53.             demands.add(line[i]);
  54.         }
  55.         StringBuilder sb = new StringBuilder();
  56.         for (String demand : demands) {
  57.             if (locations.containsKey(demand)) {
  58.                 sb.append(demand + ":\n");
  59.                 TreeMap<String, ArrayList<String>> list = locations.get(demand);
  60.                 int count = 1;
  61.                 for (String name : list.keySet()){
  62.                     ArrayList<String> timeList = list.get(name);
  63.                             sb.append(String.format("%d. %s -> ",count,name,timeList.get(0)));
  64.                         timeList.stream().sorted().forEach(e -> sb.append(e + ", " ));
  65.                     sb.deleteCharAt(sb.length()-2);
  66.                     sb.append("\n");
  67.                     count++;
  68.                 }
  69.             }
  70.         }
  71.         String result = sb.toString();
  72.         System.out.println(result);
  73.     }
  74. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement