def main(arr, mink, maxk):
n = len(arr)
minkIndex = -1
maxkIndex = -1
wall = -1
ans = 0
for i in range(n):
ele = arr[i]
# 1. The Wall Condition
if (ele < mink or maxk < ele):
if minkIndex != -1 and maxkIndex != -1:
x = min(minkIndex, maxkIndex) - wall - 1
y = i - max(minkIndex, maxkIndex) - 1
ans += (x + y + 1 + x * y)
wall = i
minkIndex = -1
maxkIndex = -1
else:
# 2. Harmless Padding
if (mink < ele and ele < maxk):
continue
# 3. The minK == maxK Custom Bypass Edge Case
elif (mink == maxk and maxk == ele):
x = i - wall - 1
y = 0
ans += (x + y + 1 + x * y)
# 4. Standard Anchor Shifts
else:
if ele == mink:
if maxkIndex == -1:
minkIndex = i
elif maxkIndex != -1 and minkIndex == -1:
minkIndex = i
else:
x = min(minkIndex, maxkIndex) - wall - 1
y = i - max(minkIndex, maxkIndex) - 1
ans += (x + y + 1 + x * y)
minkIndex = i
else: # ele == maxk
if minkIndex == -1:
maxkIndex = i
elif minkIndex != -1 and maxkIndex == -1:
maxkIndex = i
else:
x = min(minkIndex, maxkIndex) - wall - 1
y = i - max(minkIndex, maxkIndex) - 1
ans += (x + y + 1 + x * y)
maxkIndex = i
# 5. Final Cliff Edge Tally
if minkIndex != -1 and maxkIndex != -1:
x = min(minkIndex, maxkIndex) - wall - 1
y = n - 1 - max(minkIndex, maxkIndex)
ans += (x + y + 1 + x * y)
return ans
ZGVmIG1haW4oYXJyLCBtaW5rLCBtYXhrKToKICAgIG4gPSBsZW4oYXJyKQogICAgbWlua0luZGV4ID0gLTEKICAgIG1heGtJbmRleCA9IC0xCiAgICB3YWxsID0gLTEKICAgIGFucyA9IDAKICAgIAogICAgZm9yIGkgaW4gcmFuZ2Uobik6CiAgICAgICAgZWxlID0gYXJyW2ldCiAgICAgICAgCiAgICAgICAgIyAxLiBUaGUgV2FsbCBDb25kaXRpb24KICAgICAgICBpZiAoZWxlIDwgbWluayBvciBtYXhrIDwgZWxlKToKICAgICAgICAgICAgaWYgbWlua0luZGV4ICE9IC0xIGFuZCBtYXhrSW5kZXggIT0gLTE6CiAgICAgICAgICAgICAgICB4ID0gbWluKG1pbmtJbmRleCwgbWF4a0luZGV4KSAtIHdhbGwgLSAxCiAgICAgICAgICAgICAgICB5ID0gaSAtIG1heChtaW5rSW5kZXgsIG1heGtJbmRleCkgLSAxCiAgICAgICAgICAgICAgICBhbnMgKz0gKHggKyB5ICsgMSArIHggKiB5KQogICAgICAgICAgICAgICAgCiAgICAgICAgICAgIHdhbGwgPSBpCiAgICAgICAgICAgIG1pbmtJbmRleCA9IC0xCiAgICAgICAgICAgIG1heGtJbmRleCA9IC0xCiAgICAgICAgICAgIAogICAgICAgIGVsc2U6CiAgICAgICAgICAgICMgMi4gSGFybWxlc3MgUGFkZGluZwogICAgICAgICAgICBpZiAobWluayA8IGVsZSBhbmQgZWxlIDwgbWF4ayk6CiAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICMgMy4gVGhlIG1pbksgPT0gbWF4SyBDdXN0b20gQnlwYXNzIEVkZ2UgQ2FzZQogICAgICAgICAgICBlbGlmIChtaW5rID09IG1heGsgYW5kIG1heGsgPT0gZWxlKToKICAgICAgICAgICAgICAgIHggPSBpIC0gd2FsbCAtIDEKICAgICAgICAgICAgICAgIHkgPSAwCiAgICAgICAgICAgICAgICBhbnMgKz0gKHggKyB5ICsgMSArIHggKiB5KQogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICMgNC4gU3RhbmRhcmQgQW5jaG9yIFNoaWZ0cwogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgaWYgZWxlID09IG1pbms6CiAgICAgICAgICAgICAgICAgICAgaWYgbWF4a0luZGV4ID09IC0xOgogICAgICAgICAgICAgICAgICAgICAgICBtaW5rSW5kZXggPSBpCiAgICAgICAgICAgICAgICAgICAgZWxpZiBtYXhrSW5kZXggIT0gLTEgYW5kIG1pbmtJbmRleCA9PSAtMToKICAgICAgICAgICAgICAgICAgICAgICAgbWlua0luZGV4ID0gaQogICAgICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgICAgIHggPSBtaW4obWlua0luZGV4LCBtYXhrSW5kZXgpIC0gd2FsbCAtIDEKICAgICAgICAgICAgICAgICAgICAgICAgeSA9IGkgLSBtYXgobWlua0luZGV4LCBtYXhrSW5kZXgpIC0gMQogICAgICAgICAgICAgICAgICAgICAgICBhbnMgKz0gKHggKyB5ICsgMSArIHggKiB5KQogICAgICAgICAgICAgICAgICAgICAgICBtaW5rSW5kZXggPSBpCiAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgZWxzZTogIyBlbGUgPT0gbWF4awogICAgICAgICAgICAgICAgICAgIGlmIG1pbmtJbmRleCA9PSAtMToKICAgICAgICAgICAgICAgICAgICAgICAgbWF4a0luZGV4ID0gaQogICAgICAgICAgICAgICAgICAgIGVsaWYgbWlua0luZGV4ICE9IC0xIGFuZCBtYXhrSW5kZXggPT0gLTE6CiAgICAgICAgICAgICAgICAgICAgICAgIG1heGtJbmRleCA9IGkKICAgICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICAgICB4ID0gbWluKG1pbmtJbmRleCwgbWF4a0luZGV4KSAtIHdhbGwgLSAxCiAgICAgICAgICAgICAgICAgICAgICAgIHkgPSBpIC0gbWF4KG1pbmtJbmRleCwgbWF4a0luZGV4KSAtIDEKICAgICAgICAgICAgICAgICAgICAgICAgYW5zICs9ICh4ICsgeSArIDEgKyB4ICogeSkKICAgICAgICAgICAgICAgICAgICAgICAgbWF4a0luZGV4ID0gaQoKICAgICMgNS4gRmluYWwgQ2xpZmYgRWRnZSBUYWxseQogICAgaWYgbWlua0luZGV4ICE9IC0xIGFuZCBtYXhrSW5kZXggIT0gLTE6CiAgICAgICAgeCA9IG1pbihtaW5rSW5kZXgsIG1heGtJbmRleCkgLSB3YWxsIC0gMQogICAgICAgIHkgPSBuIC0gMSAtIG1heChtaW5rSW5kZXgsIG1heGtJbmRleCkKICAgICAgICBhbnMgKz0gKHggKyB5ICsgMSArIHggKiB5KQogICAgICAgIAogICAgcmV0dXJuIGFucw==