Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package DemoExam;
- import java.io.BufferedReader;
- import java.io.IOException;
- import java.io.InputStreamReader;
- import java.util.*;
- public class Hospital {
- public static void main(String[] args) throws IOException {
- BufferedReader reader = new BufferedReader
- (new InputStreamReader(System.in));
- Map<String, Set<String>> doctors = new LinkedHashMap<>();
- Map<String, List<String>> roomsInDepartment = new LinkedHashMap<>();
- String input;
- while (!"Output".equals(input = reader.readLine())) {
- String[] data = input.split("\\s+");
- String department = data[0], patient = data[3];
- String doctor = data[1] + " " + data[2];
- roomsInDepartment.putIfAbsent(department, new ArrayList<>());
- boolean addedPatient = addPatientsToRooms(roomsInDepartment, department, patient);
- addPatientInRegistry(doctors, addedPatient, doctor, patient);
- }
- while (!"End".equals(input = reader.readLine())) {
- String[] data = input.split("\\s+");
- printOutputByCondition(doctors, roomsInDepartment, data);
- }
- }
- private static boolean addPatientsToRooms(Map<String, List<String>> roomsInDepartment, String department, String patient) {
- boolean bool = false;
- if (roomsInDepartment.get(department).size() < 60) {
- roomsInDepartment.get(department).add(patient);
- bool = true;
- }
- return bool;
- }
- private static void addPatientInRegistry(Map<String, Set<String>> doctors, boolean addedPatient, String doctor, String patient) {
- if (addedPatient) {
- doctors.putIfAbsent(doctor, new TreeSet<>());
- doctors.get(doctor).add(patient);
- }
- }
- private static void printOutputByCondition(Map<String, Set<String>> doctors, Map<String, List<String>> roomsInDepartment, String[] data) {
- if (data.length > 1) {
- if (Character.isDigit(data[1].charAt(0))) {
- int room = Integer.valueOf(data[1]) - 1;
- if (roomsInDepartment.containsKey(data[0])) {
- while (roomsInDepartment.get(data[0]).size() % 3 != 0) {
- roomsInDepartment.get(data[0]).add("");
- }
- List<String> result = roomsInDepartment.get(data[0]).subList(room * 3, room * 3 + 3);
- result.stream().filter(e -> !"".equals(e)).sorted().forEach(System.out::println);
- }
- } else {
- String key = data[0] + " " + data[1];
- if (doctors.containsKey(key)) {
- doctors.get(key).forEach(System.out::println);
- }
- }
- } else {
- if (roomsInDepartment.containsKey(data[0])) {
- roomsInDepartment.get(data[0]).forEach(System.out::println);
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement