Advertisement
Guest User

Untitled

a guest
Jun 19th, 2019
91
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.94 KB | None | 0 0
  1. package DemoExam;
  2.  
  3. import java.io.BufferedReader;
  4. import java.io.IOException;
  5. import java.io.InputStreamReader;
  6. import java.util.*;
  7.  
  8. public class Hospital {
  9.     public static void main(String[] args) throws IOException {
  10.         BufferedReader reader = new BufferedReader
  11.                 (new InputStreamReader(System.in));
  12.  
  13.         Map<String, Set<String>> doctors = new LinkedHashMap<>();
  14.         Map<String, List<String>> roomsInDepartment = new LinkedHashMap<>();
  15.         String input;
  16.  
  17.         while (!"Output".equals(input = reader.readLine())) {
  18.             String[] data = input.split("\\s+");
  19.  
  20.             String department = data[0], patient = data[3];
  21.             String doctor = data[1] + " " + data[2];
  22.  
  23.             roomsInDepartment.putIfAbsent(department, new ArrayList<>());
  24.             boolean addedPatient = addPatientsToRooms(roomsInDepartment, department, patient);
  25.             addPatientInRegistry(doctors, addedPatient, doctor, patient);
  26.         }
  27.         while (!"End".equals(input = reader.readLine())) {
  28.             String[] data = input.split("\\s+");
  29.  
  30.             printOutputByCondition(doctors, roomsInDepartment, data);
  31.         }
  32.     }
  33.  
  34.     private static boolean addPatientsToRooms(Map<String, List<String>> roomsInDepartment, String department, String patient) {
  35.         boolean bool = false;
  36.         if (roomsInDepartment.get(department).size() < 60) {
  37.             roomsInDepartment.get(department).add(patient);
  38.             bool = true;
  39.         }
  40.         return bool;
  41.     }
  42.  
  43.     private static void addPatientInRegistry(Map<String, Set<String>> doctors, boolean addedPatient, String doctor, String patient) {
  44.         if (addedPatient) {
  45.             doctors.putIfAbsent(doctor, new TreeSet<>());
  46.             doctors.get(doctor).add(patient);
  47.         }
  48.     }
  49.  
  50.     private static void printOutputByCondition(Map<String, Set<String>> doctors, Map<String, List<String>> roomsInDepartment, String[] data) {
  51.         if (data.length > 1) {
  52.             if (Character.isDigit(data[1].charAt(0))) {
  53.                 int room = Integer.valueOf(data[1]) - 1;
  54.  
  55.                 if (roomsInDepartment.containsKey(data[0])) {
  56.                     while (roomsInDepartment.get(data[0]).size() % 3 != 0) {
  57.                         roomsInDepartment.get(data[0]).add("");
  58.                     }
  59.                     List<String> result = roomsInDepartment.get(data[0]).subList(room * 3, room * 3 + 3);
  60.                     result.stream().filter(e -> !"".equals(e)).sorted().forEach(System.out::println);
  61.                 }
  62.             } else {
  63.                 String key = data[0] + " " + data[1];
  64.  
  65.                 if (doctors.containsKey(key)) {
  66.                     doctors.get(key).forEach(System.out::println);
  67.                 }
  68.             }
  69.         } else {
  70.             if (roomsInDepartment.containsKey(data[0])) {
  71.                 roomsInDepartment.get(data[0]).forEach(System.out::println);
  72.             }
  73.         }
  74.     }
  75. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement