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

Задача . F. Разделение массива


Вам задан массив \(a\), состоящий из \(n\) целых чисел.

Пусть \(min(l, r)\) равно минимальному значению среди \(a_l, a_{l + 1}, \ldots, a_r\), а \(max(l, r)\) равно максимальному значению среди \(a_l, a_{l + 1}, \ldots, a_r\).

Ваша задача — выбрать три таких положительных (больших \(0\)) целых числа \(x\), \(y\) и \(z\), что:

  • \(x + y + z = n\);
  • \(max(1, x) = min(x + 1, x + y) = max(x + y + 1, n)\).

Другими словами, вам необходимо разделить массив \(a\) на три последовательные непустые части, которые покрывают весь массив, и максимум в первой части равен минимуму во второй части, а также равен максимуму в третьей части (или же определить, что такое разбиение невозможно найти).

Среди всех возможных троек (разделений) можно выбрать любое.

Вам необходимо ответить на \(t\) независимых наборов тестовых данных.

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

Первая строка входных данных содержит одно целое число \(t\) (\(1 \le t \le 2 \cdot 10^4\)) — количество наборов тестовых данных. Затем следуют \(t\) наборов тестовых данных.

Первая строка набора тестовых данных содержит одно целое число \(n\) (\(3 \le n \le 2 \cdot 10^5\)) — длину \(a\).

Вторая строка набора тестовых данных содержит \(n\) целых чисел \(a_1, a_2, \ldots, a_n\) (\(1 \le a_i \le 10^9\)), где \(a_i\) равно \(i\)-му элементу \(a\).

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

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

Выведите ответ на каждый набор тестовых данных: NO в единственной строке, если не существует такого разбиения \(a\), которе удовлетворяет ограничениям из условия задачи. Иначе выведите YES в первой строке и три целых числа \(x\), \(y\) и \(z\) (\(x + y + z = n\)) во второй строке.

Если существует несколько возможных ответов, вы можете вывести любой.


Примеры
Входные данныеВыходные данные
1 6
11
1 2 3 3 3 4 4 3 4 2 1
8
2 9 1 7 3 9 4 1
9
2 1 4 2 4 3 3 1 2
7
4 2 1 1 4 1 4
5
1 1 1 1 1
7
4 3 4 3 3 3 4
YES
6 1 4
NO
YES
2 5 2
YES
4 1 2
YES
1 1 3
YES
2 1 4

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

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