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()))