Стек подобен башне элементов. Представьте, как будет выглядеть каждое из перечисленных вами действий, если бы ему нужно было работать с кортежами, а не с числами, в форме:
(number, h)
, где h
- это самый высокий элемент на этом уровне или ниже в башня. Например:
input 1 8 1 6 1 9 1 5 1 10 3 2 3 2 2 3
query out stack
1 8 [(8, 8)]
1 6 [(8, 8), (6, 8)]
1 9 [(8, 8), (6, 8), (9, 9)]
1 5 [(8, 8), (6, 8), (9, 9), (5, 9)]
1 10 [(8, 8), (6, 8), (9, 9), (5, 9), (10, 10)]
3 10
2 [(8, 8), (6, 8), (9, 9), (5, 9)]
3 9
2 [(8, 8), (6, 8), (9, 9)]
2 [(8, 8), (6, 8)]
3 8
Рабочий код:
n=int(input())
class Stack:
def __init__(self):
self.stack1=[(None, -float('inf'))]
def push(self,x):
return self.stack1.append((x, max(self.maximum(), x)))
def pop(self):
self.stack1.pop()
return
def maximum(self):
return self.stack1[-1][1]
stack_object=Stack()
for _ in range(n):
a=list(map(int,input().split()))
if a[0]==1:
stack_object.push(a[1])
elif a[0]==2:
stack_object.pop()
else:
print(stack_object.maximum())