def main():
k = int(input())
a = list(map(int,input().split()))
nge = [-1] * k * 2
a += a
steck = []
for i in range(k*2):
while steck and a[i] > a[steck[-1]]:
nge[steck.pop()] = i
steck.append(i)
dp = [-1] * k * 2
for i in range(k*2-1,-1,-1):
if nge[i] == -1:
dp[i] = 1
else:
dp[i] = dp[nge[i]] + 1
print(max(dp))
main()
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | def main(): k = int(input()) a = list(map(int,input().split())) nge = [-1] * k * 2 a += a steck = [] for i in range(k*2): while steck and a[i] > a[steck[-1]]: nge[steck.pop()] = i steck.append(i) dp = [-1] * k * 2 for i in range(k*2-1,-1,-1): if nge[i] == -1: dp[i] = 1 else: dp[i] = dp[nge[i]] + 1 print(max(dp)) main() |
English