from collections import deque
class MyStack:
def __init__(self):
# Используем одну очередь
self.q = deque()
def push(self, x: int) -> None:
# 1. Добавляем новый элемент в конец очереди
self.q.append(x)
# 2. Перемещаем все элементы, которые были до него, в конец
# Тем самым новый элемент оказывается в начале (на вершине стека)
for _ in range(len(self.q) - 1):
self.q.append(self.q.popleft())
def pop(self) -> int:
# Удаляем и возвращаем первый элемент (он же вершина стека)
return self.q.popleft()
def top(self) -> int:
# Просто смотрим на первый элемент
return self.q[0]
def empty(self) -> bool:
return len(self.q) == 0