kasougi

Untitled

Jun 5th, 2021
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.11 KB | None | 0 0
  1. left = []
  2. right = []
  3. n = int(input())
  4. for i in range(n):
  5. row = input().split('_')
  6. left.append([0 if sym == '.' else 1 for sym in row[0]])
  7. free = 0
  8. for f in left[len(left) - 1]:
  9. if not f:
  10. free += 1
  11. left[len(left) - 1].append(free)
  12. right.append([0 if sym == '.' else 1 for sym in row[1]])
  13. free = 0
  14. for f in right[len(right) - 1]:
  15. if not f:
  16. free += 1
  17. right[len(right) - 1].append(free)
  18. d = {
  19. "left": left,
  20. "right": right,
  21. "rightwindow": 1,
  22. "leftwindow": 0,
  23. "leftaisle": 1,
  24. "rightaisle": 0,
  25. "right0": 'D',
  26. "right1": 'E',
  27. "right2": 'F',
  28. "left0": 'A',
  29. "left1": 'B',
  30. "left2": 'C',
  31.  
  32. }
  33.  
  34. n = int(input())
  35.  
  36. pas_list = []
  37. for i in range(n):
  38. num, side, position = (z for z in input().split())
  39. pas_list.append({'num': int(num), 'side': side, 'position': side + position})
  40.  
  41. for pas in pas_list:
  42. for i_row in range(len(d[pas['side']])):
  43. if not d[pas['side']][i_row][3] < pas['num']:
  44. count = pas['num']
  45. sid_list = d[pas['side']][i_row].copy()
  46. if d[pas['position']]:
  47. for i_prov in [2, 1, 0]:
  48. if not d[pas['side']][i_row][i_prov] and count > 0:
  49. count -= 1
  50. sid_list[i_prov] = 1
  51. else:
  52. break
  53.  
  54. else:
  55. for i_prov in [0, 1, 2]:
  56. if not d[pas['side']][i_row][i_prov] and count > 0:
  57. count -= 1
  58. sid_list[i_prov] = 1
  59. else:
  60. break
  61.  
  62. if count == 0:
  63. print(f"Passengers can take seats:", end='')
  64. sid_list[3] = d[pas['side']][i_row][3] - pas['num']
  65. list_for_print = sid_list[:3].copy()
  66. for i in range(len(list_for_print)):
  67. if sid_list[i] != d[pas['side']][i_row][i]:
  68. print(end=' ')
  69. list_for_print[i] = 'X'
  70. print(str(i_row + 1) + d[pas['side'] + str(i)], end='')
  71. else:
  72. if list_for_print[i]:
  73. list_for_print[i] = '#'
  74. else:
  75. list_for_print[i] = '.'
  76. else:
  77. print(end='\n')
  78. for i in range(len(d["left"])):
  79. if i != i_row:
  80. for ii in range(3):
  81. if d["left"][i][ii]:
  82. print('#', end='')
  83. else:
  84. print('.', end='')
  85. print(end='_')
  86. for ii in range(3):
  87. if d["right"][i][ii]:
  88. print('#', end='')
  89. else:
  90. print('.', end='')
  91. print(end='\n')
  92. elif pas['side'] == 'left':
  93. for ii in range(3):
  94. print(list_for_print[ii], end='')
  95. print(end='_')
  96. for ii in range(3):
  97. if d["right"][i][ii]:
  98. print('#', end='')
  99. else:
  100. print('.', end='')
  101. print(end='\n')
  102. elif pas['side'] == 'right':
  103. for ii in range(3):
  104. if d["left"][i][ii]:
  105. print('#', end='')
  106. else:
  107. print('.', end='')
  108. print(end='_')
  109. for ii in range(3):
  110. print(list_for_print[ii], end='')
  111. print(end='\n')
  112. d[pas['side']][i_row] = sid_list
  113. break
  114. else:
  115. print("Cannot fulfill passengers requirements",end='\n')
Advertisement
Add Comment
Please, Sign In to add comment