from itertools import accumulate
import timeit
def suffix_maximums(l):
return list(accumulate(l[::-1], max))[::-1]
def suffix_maximums_2(l):
return list(reversed(list(accumulate(reversed(l), max))))
l = [5, 4, 6, 2, 3, 1]
print(timeit.timeit('suffix_maximums(l)', globals=globals()))
print(timeit.timeit('suffix_maximums_2(l)', globals=globals()))
ZnJvbSBpdGVydG9vbHMgaW1wb3J0IGFjY3VtdWxhdGUKaW1wb3J0IHRpbWVpdAoKZGVmIHN1ZmZpeF9tYXhpbXVtcyhsKToKICAgIHJldHVybiBsaXN0KGFjY3VtdWxhdGUobFs6Oi0xXSwgbWF4KSlbOjotMV0KZGVmIHN1ZmZpeF9tYXhpbXVtc18yKGwpOgogICAgcmV0dXJuIGxpc3QocmV2ZXJzZWQobGlzdChhY2N1bXVsYXRlKHJldmVyc2VkKGwpLCBtYXgpKSkpCgpsID0gWzUsIDQsIDYsIDIsIDMsIDFdCgpwcmludCh0aW1laXQudGltZWl0KCdzdWZmaXhfbWF4aW11bXMobCknLCBnbG9iYWxzPWdsb2JhbHMoKSkpCnByaW50KHRpbWVpdC50aW1laXQoJ3N1ZmZpeF9tYXhpbXVtc18yKGwpJywgZ2xvYmFscz1nbG9iYWxzKCkpKQ==