eolymp
bolt
Спробуйте наш новий інтерфейс для відправки розв'язків
Задачі

Побудуйте масив

Побудуйте масив

Алі з нуля любить створювати новий масив. Сьогодні він хоче побудувати масив $a_1, a_2, ..., a_n$ з $n$ елементів. Спочатку у нього є масив $b_1, b_2, ..., b_n$, який містить $n$ нулів, і він може застосовувати до цього масиву лише наступні операції: \begin{itemize} \item $MAX(l, r, x)$: Це означає, що $b_i = max(b_i, x)$ для всіх $i$, що задовольняють умові $l \le i \le r$. Звісно, у цій операції повинна виконуватися умова $1 \le l \le r \le n$. \end{itemize} Тепер Алі думає над тим, за яке мінімальне число операцій він зможе отримати масив $a$. Допоможіть Алі знайти мінімальну кількість операцій і будь-яку послідовність таких операцій. \InputFile Перший рядок містить одне ціле число $n~(1 \le n \le 10^5)$. Наступний рядок містить $n$ цілих чисел $a_1, a_2, ..., a_n~(0 \le a_i \le 10^9)$. \OutputFile Виведіть мінімальну кількість операцій, необхідну для отримання масиву 𝑎 у першому рядку. Позначимо це число через $m$. Виведіть будь-яку таку послідовність операцій у наступних 𝑚 рядках у форматі $l~r~x$. \Examples \textbf{Приклад 1.} Подивіться, як змінюється масив при застосуванні операцій: \begin{lstlisting}[language=C++] b[] = 0 0 0 0 0 0 0 0 b[] = 1 1 1 0 0 0 0 0 b[] = 1 7 1 0 0 0 0 0 b[] = 1 7 1 7 7 0 0 0 b[] = 1 7 1 7 7 2 2 2 b[] = 1 7 1 7 7 3 2 2 b[] = 1 7 1 7 7 3 2 3 \end{lstlisting} Неможливо отримати заданий масив менше, ніж за $6$ операцій. Можуть бути інші правильні варіанти послідовності операцій. \textbf{Приклад 2.} \begin{lstlisting}[language=C++] b[] = 0 0 0 0 0 0 0 b[] = 0 0 1 1 1 1 0 b[] = 0 0 1 3 3 1 0 \end{lstlisting}
Ліміт часу 1 секунда
Ліміт використання пам'яті 128 MiB
Вхідні дані #1
8
1 7 1 7 7 3 2 3
Вихідні дані #1
6
1 8 1
2 2 7
4 8 2
4 6 3
4 5 7
8 8 3
Вхідні дані #2
7
0 0 1 3 3 1 0
Вихідні дані #2
2
3 6 1
4 5 3
Джерело 2024, Азербайджан, Республіканська Олімпіада з Інформатики, Півфінал, 18 лютого