Kotlin Heroes: Episode 11 |
---|
Закончено |
Задан целочисленный массив $$$a$$$ размера $$$n$$$.
Назовем массив хорошим, если его можно получить при помощи следующего алгоритма: создать массив, состоящий из одного любого целого числа; а затем произвольное количество раз выполнить следующую операцию: выбрать элемент из уже существующих в массиве (назовем его $$$x$$$) и в конец массива добавить $$$x$$$, $$$(x-1)$$$ или $$$(x+1)$$$.
Например, массивы $$$[1, 2, 1]$$$, $$$[5]$$$ и $$$[3, 2, 1, 4]$$$ хорошие, а $$$[2, 4]$$$ и $$$[3, 1, 2]$$$ — нет.
Ваша задача — посчитать количество хороших непрерывных подмассивов массива $$$a$$$. Два подмассива с одинаковыми элементами, которые различаются своими позициями в массиве $$$a$$$, считаются различными.
Первая строка содержит одно целое число $$$t$$$ ($$$1 \le t \le 10^4$$$) — количество наборов входных данных.
Первая строка каждого набора содержит одно целое число $$$n$$$ ($$$1 \le n \le 3 \cdot 10^5$$$).
Вторая строка каждого набора содержит $$$n$$$ целых чисел $$$a_1, a_2, \dots, a_n$$$ ($$$ 1 \le a_i \le n)$$$.
Дополнительное ограничение на входные данные: сумма $$$n$$$ по всем наборам входных данных не превосходит $$$3 \cdot 10^5$$$.
Для каждого набора входных данных выведите одно целое число — количество хороших непрерывных подмассивов массива $$$a$$$.
431 1 343 2 3 11184 5 6 5 3 2 3 1
4 9 1 23
В первом примере следующие четыре подмассива — хорошие:
Во втором примере единственный подмассив, не являющийся хорошим, — это подмассив с $$$3$$$-го по $$$4$$$-й элемент.
Название |
---|