Астрологи объявили день очередей ограниченного размера. Тимофею нужно написать класс MyQueueSized, который принимает параметр max_size, означающий максимально допустимое количество элементов в очереди.
Помогите ему —– реализуйте программу, которая будет эмулировать работу такой очереди. Функции, которые надо поддержать, описаны в формате ввода.
Формат ввода
В первой строке записано одно число — количество команд, оно не превосходит 5000.
Во второй строке задан максимально допустимый размер очереди, он не превосходит 5000.
Далее идут команды по одной на строке. Команды могут быть следующих видов:
push(x) — добавить число x в очередь;
pop() — удалить число из очереди и вывести на печать;
peek() — напечатать первое число в очереди;
size() — вернуть размер очереди;
При превышении допустимого размера очереди нужно вывести «error». При вызове операций pop() или peek() для пустой очереди нужно вывести «None».
Формат вывода
Напечатайте результаты выполнения нужных команд, по одному на строке.
class MyQueueSized: def __init__(self, max_size): self.queue = [None for _ in range(n)] self.max_n = max_size self.head = 0 self.tail = 0 self.size = 0 def is_empty(self): return self.size == 0 def push(self, x): if self.size < self.max_n: self.queue[self.tail] = x self.tail = (self.tail + 1) % self.max_n self.size += 1 return 'OK' else: return 'error' def peek(self): if self.is_empty(): return None return self.queue[self.head] def pop(self): if self.is_empty(): return None x = self.queue[self.head] self.queue[self.head] = None self.head = (self.head + 1) % self.max_n self.size -= 1 return x n = int(input()) queue_length = int(input()) s = MyQueueSized(queue_length) res = [] for i in range(n): command = input().split() if command[0] == 'push': a = s.push(command[1]) if a == 'error': res.append(a) if command[0] == 'pop': res.append(s.pop()) if command[0] == 'peek': res.append(s.peek()) if command[0] == 'size': res.append(s.size) for x in res: print(x)