```
N=int(input())
stack=[]
for i in range(N):
a=list(map(int,input().split()))
if a[0]==1:
stack.append(a[1])
elif a[0]==2:
stack.pop()
elif a[0]==3:
print(max(stack))
```

Why is this code showing RunTime Error

Hackerrank does not tell you the type of error. It only shows AC or wrong.

Your code is not a runtime error, but a TLE. Finding `max(stack)`

takes O(n) time, making your time complexity O(n^2). Your stack should be storing the prefix maximums, not the elements itself.

##
Correct Code

```
N=int(input())
stack=[]
stack.append(-1)
for i in range(N):
a=list(map(int,input().split()))
if a[0]==1:
stack.append(max(stack[-1],a[1]))
elif a[0]==2:
stack.pop()
elif a[0]==3:
print(stack[-1])
```

2 Likes

From can i get the knowledge of time complexity and apply in the question as a beginner.

Also from where can I refer the theory for the above concepts.