Advertisement
Prohause

04. Hospital

Oct 10th, 2018
169
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.78 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6.  
  7. namespace Problem_4___Hospital
  8. {
  9. public class StartUp
  10. {
  11. public static void Main(string[] args)
  12. {
  13. var input = Console.ReadLine().Trim();
  14.  
  15. var deparments = new Dictionary<string,List<string>>();
  16. var doctors = new Dictionary<string,SortedSet<string>>();
  17.  
  18. while (!input.ToLower().Equals("output"))
  19. {
  20. var tokens = input.Split(new[] {' ', '\t'}, StringSplitOptions.RemoveEmptyEntries).ToArray();
  21. var dep = tokens[0];
  22. var doc = tokens[1] + " " + tokens[2];
  23. var patient = tokens[3];
  24.  
  25. if (!deparments.ContainsKey(dep))
  26. {
  27. deparments.Add(dep,new List<string>());
  28. }
  29. deparments[dep].Add(patient);
  30.  
  31. if (!doctors.ContainsKey(doc))
  32. {
  33. doctors.Add(doc,new SortedSet<string>());
  34. }
  35. doctors[doc].Add(patient);
  36.  
  37. input = Console.ReadLine().Trim();
  38. }
  39.  
  40. input = Console.ReadLine().Trim();
  41. while (!input.ToLower().Equals("end"))
  42. {
  43. if (deparments.ContainsKey(input))
  44. {
  45. deparments[input].ForEach(Console.WriteLine);
  46. }
  47. else if (doctors.ContainsKey(input))
  48. {
  49. doctors[input].ToList().ForEach(Console.WriteLine);
  50. }
  51. else
  52. {
  53. var tokens = input.Split(new[] {' ', '\t'}, StringSplitOptions.RemoveEmptyEntries).ToArray();
  54. var dep = tokens[0];
  55. int room;
  56. var hasParsed = int.TryParse(tokens[1], out room);
  57.  
  58. if (hasParsed)
  59. {
  60. var startIndex = room * 3 - 3;
  61.  
  62. if (startIndex<=deparments[dep].Count-3)
  63. {
  64. deparments[dep].Skip(startIndex).Take(3).OrderBy(p=>p).ToList().ForEach(Console.WriteLine);
  65. }
  66. else
  67. {
  68. if (startIndex<=deparments[dep].Count)
  69. {
  70. deparments[dep].Skip(startIndex).Take(deparments[dep].Count-startIndex).OrderBy(p => p).ToList().ForEach(Console.WriteLine);
  71. }
  72. }
  73. }
  74. }
  75. input = Console.ReadLine();
  76. }
  77. }
  78. }
  79. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement