def longest_subarray(arr):
n = len(arr)
if n == 0:
return None
prefix = [1] * n
suffix = [1] * n
# Build prefix array (non-increasing)
for i in range(1, n):
if arr[i - 1] >= arr[i]:
prefix[i] = prefix[i - 1] + 1
# Build suffix array (non-decreasing)
for i in range(n - 2, -1, -1):
if arr[i] <= arr[i + 1]:
suffix[i] = suffix[i + 1] + 1
max_len = 0
start = end = 0
# Find best center
for i in range(n):
curr = prefix[i] + suffix[i] - 1
if curr > max_len:
max_len = curr
start = i - prefix[i] + 1
end = i + suffix[i] - 1
return start, end, max_len, arr[start:end + 1]
arr = [9,8,7,6,5,14,3,2,1,9,8,7,6,5,6,7,8,9,10,11,12,13,24,25,1]
s, e, length, subarray = longest_subarray(arr)
print(s, e, length)
print(subarray)
ZGVmIGxvbmdlc3Rfc3ViYXJyYXkoYXJyKToKICAgIG4gPSBsZW4oYXJyKQogICAgCiAgICBpZiBuID09IDA6CiAgICAgICAgcmV0dXJuIE5vbmUKCiAgICBwcmVmaXggPSBbMV0gKiBuCiAgICBzdWZmaXggPSBbMV0gKiBuCgogICAgIyBCdWlsZCBwcmVmaXggYXJyYXkgKG5vbi1pbmNyZWFzaW5nKQogICAgZm9yIGkgaW4gcmFuZ2UoMSwgbik6CiAgICAgICAgaWYgYXJyW2kgLSAxXSA+PSBhcnJbaV06CiAgICAgICAgICAgIHByZWZpeFtpXSA9IHByZWZpeFtpIC0gMV0gKyAxCgogICAgIyBCdWlsZCBzdWZmaXggYXJyYXkgKG5vbi1kZWNyZWFzaW5nKQogICAgZm9yIGkgaW4gcmFuZ2UobiAtIDIsIC0xLCAtMSk6CiAgICAgICAgaWYgYXJyW2ldIDw9IGFycltpICsgMV06CiAgICAgICAgICAgIHN1ZmZpeFtpXSA9IHN1ZmZpeFtpICsgMV0gKyAxCgogICAgbWF4X2xlbiA9IDAKICAgIHN0YXJ0ID0gZW5kID0gMAoKICAgICMgRmluZCBiZXN0IGNlbnRlcgogICAgZm9yIGkgaW4gcmFuZ2Uobik6CiAgICAgICAgY3VyciA9IHByZWZpeFtpXSArIHN1ZmZpeFtpXSAtIDEKICAgICAgICBpZiBjdXJyID4gbWF4X2xlbjoKICAgICAgICAgICAgbWF4X2xlbiA9IGN1cnIKICAgICAgICAgICAgc3RhcnQgPSBpIC0gcHJlZml4W2ldICsgMQogICAgICAgICAgICBlbmQgPSBpICsgc3VmZml4W2ldIC0gMQoKICAgIHJldHVybiBzdGFydCwgZW5kLCBtYXhfbGVuLCBhcnJbc3RhcnQ6ZW5kICsgMV0KYXJyID0gWzksOCw3LDYsNSwxNCwzLDIsMSw5LDgsNyw2LDUsNiw3LDgsOSwxMCwxMSwxMiwxMywyNCwyNSwxXQpzLCBlLCBsZW5ndGgsIHN1YmFycmF5ID0gbG9uZ2VzdF9zdWJhcnJheShhcnIpCgpwcmludChzLCBlLCBsZW5ndGgpCnByaW50KHN1YmFycmF5KQo=