Олимпиадный тренинг

Задача . C. Манхэттенские подмассивы


Предположим, есть две точки \(p = (x_p, y_p)\) и \(q = (x_q, y_q)\). Тогда обозначим манхэттенское расстояние между ними как \(d(p, q) = |x_p - x_q| + |y_p - y_q|\).

Назовем три точки \(p\), \(q\), \(r\) как плохую тройку, если \(d(p, r) = d(p, q) + d(q, r)\).

Назовем массив \(b_1, b_2, \dots, b_m\) хорошим, если нельзя выбрать три различных индекса \(i\), \(j\) и \(k\) так, что точки \((b_i, i)\), \((b_j, j)\) и \((b_k, k)\) — плохая тройка.

Вам задан массив \(a_1, a_2, \dots, a_n\). Посчитайте количество хороших подмассивов \(a\). Подмассив массива \(a\) — это массив \(a_l, a_{l + 1}, \dots, a_r\) для некоторых \(1 \le l \le r \le n\).

Заметим, что согласно определению, подмассивы длины \(1\) и \(2\) являются хорошими.

Входные данные

В первой строке задано одно целое число \(t\) (\(1 \le t \le 5000\)) — количество наборов входных данных.

В первой строке каждого набора задано одно целое число \(n\) (\(1 \le n \le 2 \cdot 10^5\)) — длина массива \(a\).

Во второй строке каждого набора заданы \(n\) целых чисел \(a_1, a_2, \dots, a_n\) (\(1 \le a_i \le 10^9\)).

Гарантируется, что сумма \(n\) по всем наборам не превосходит \(2 \cdot 10^5\).

Выходные данные

Для каждого набора выведите количество хороших подмассивов массива \(a\).

Примечание

В первом наборе, можно доказать, что любой подмассив массива \(a\) является хорошим. Например, подмассив \([a_2, a_3, a_4]\) — хороший, потому что содержит только три элемента и:

  • \(d((a_2, 2), (a_4, 4)) = |4 - 3| + |2 - 4| = 3\) \(<\) \(d((a_2, 2), (a_3, 3)) + d((a_3, 3), (a_4, 4)) = 3 + 1 + 2 + 1 = 7\);
  • \(d((a_2, 2), (a_3, 3))\) \(<\) \(d((a_2, 2), (a_4, 4)) + d((a_4, 4), (a_3, 3))\);
  • \(d((a_3, 3), (a_4, 4))\) \(<\) \(d((a_3, 3), (a_2, 2)) + d((a_2, 2), (a_4, 4))\);

Во втором наборе, для примера, подмассив \([a_1, a_2, a_3, a_4]\) не является хорошим, потому что содержит плохую тройку \((a_1, 1)\), \((a_2, 2)\), \((a_4, 4)\):

  • \(d((a_1, 1), (a_4, 4)) = |6 - 9| + |1 - 4| = 6\);
  • \(d((a_1, 1), (a_2, 2)) = |6 - 9| + |1 - 2| = 4\);
  • \(d((a_2, 2), (a_4, 4)) = |9 - 9| + |2 - 4| = 2\);

То есть, \(d((a_1, 1), (a_4, 4)) = d((a_1, 1), (a_2, 2)) + d((a_2, 2), (a_4, 4))\).


Примеры
Входные данныеВыходные данные
1 3
4
2 4 1 3
5
6 9 1 9 6
2
13 37
10
12
3

time 2000 ms
memory 256 Mb
Правила оформления программ и список ошибок при автоматической проверке задач

Статистика успешных решений по компиляторам
 Кол-во
С++ Mingw-w645
Комментарий учителя