import sys
OJ_DANA_DANA = sys.stdin.read().split()
N = int(OJ_DANA_DANA[0])
PIEKNE_PERLY = list(map(int, OJ_DANA_DANA[1:]))
A = PIEKNE_PERLY + PIEKNE_PERLY
WYZEJ = [10 ** 10] * (2*N)
STOS = []
for i in range (2*N-1, -1, -1):
while STOS and A[STOS[-1]] <= A[i]:
STOS.pop()
if STOS:
WYZEJ[i] = STOS[-1]
STOS.append(i)
OCH_ACH_WOW = 0
for start in range(N):
end = start + N
cnt=1
while WYZEJ[start] < end:
start = WYZEJ[start]
cnt += 1
if cnt > OCH_ACH_WOW:
OCH_ACH_WOW = cnt
print(OCH_ACH_WOW)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | import sys OJ_DANA_DANA = sys.stdin.read().split() N = int(OJ_DANA_DANA[0]) PIEKNE_PERLY = list(map(int, OJ_DANA_DANA[1:])) A = PIEKNE_PERLY + PIEKNE_PERLY WYZEJ = [10 ** 10] * (2*N) STOS = [] for i in range (2*N-1, -1, -1): while STOS and A[STOS[-1]] <= A[i]: STOS.pop() if STOS: WYZEJ[i] = STOS[-1] STOS.append(i) OCH_ACH_WOW = 0 for start in range(N): end = start + N cnt=1 while WYZEJ[start] < end: start = WYZEJ[start] cnt += 1 if cnt > OCH_ACH_WOW: OCH_ACH_WOW = cnt print(OCH_ACH_WOW) |
English