Задача №113789. Совпадающие максимумы
Саша готовится к олимпиадам по информатике и программированию и изучает структуры данных и задачи, с ними связанные. Одна из классических задач, которая попалась Саше, — поиск максимума на отрезке.
Эта задача заключается в следующем. Дан массив a из n целых чисел: a1, a2, ..., an. Требуется отвечать на запросы «найти максимум на отрезке элементов с i-го по j-й», то есть вычислить max {ai, ai + 1, ..., aj}.
Конечно же, подобная задача не составила проблемы для Саши — вскоре была готова программа, которая отвечает на подобные запросы, да ещё и очень быстро. И тут выяснилось, что на разных отрезках результаты часто совпадают.
Теперь Сашу интересует, сколько же всего способов взять пару отрезков, чтобы эти отрезки не имели общих элементов, а максимумы значений элементов массива на этих двух отрезках совпадали.
Иначе говоря, требуется найти количество четвёрок i, j, k, l, таких, что 1 ≤ i ≤ j < k ≤ l ≤ n и max{ai, ai + 1, ..., aj} = max{ak, ak + 1, ..., al}. Поскольку это количество может оказаться довольно большим, следует вывести остаток от деления этого числа на 1 000 000 007.
В первой строке входных данных содержится целое число n — размер Сашиного массива (2 ≤ n ≤ 100 000).
Во второй строке содержатся n целых чисел: элементы массива. Числа в массиве положительные и не превосходят 109.
Выведите остаток от деления количества пар непересекающихся отрезков, на которых совпадают максимумы, на 109 + 7.
6
3 3 4 4 3 2
16
12
1 3 2 3 4 1 3 4 3 2 2 5
177
6 3 3 4 4 3 2
16
12 1 3 2 3 4 1 3 4 3 2 2 5
177