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

Задача . C. Вася и массив


У Васи есть массив \(a_1, a_2, \dots, a_n\).

Вы не знаете, что это за массив, но Вася сообщил вам \(m\) фактов об этом массиве. \(i\)-й факт – это тройка чисел \(t_i\), \(l_i\) и \(r_i\) (\(0 \le t_i \le 1, 1 \le l_i < r_i \le n\)) которая означает:

  • если \(t_i=1\), то подотрезок массива \(a_{l_i}, a_{l_i + 1}, \dots, a_{r_i}\) отсортирован в порядке неубывания;
  • если \(t_i=0\), то подотрезок массива \(a_{l_i}, a_{l_i + 1}, \dots, a_{r_i}\) не отсортирован в порядке неубывания. Подотрезок считается неотсортированным, если найдется пара соседних элементов такая, что первый элемент больше второго.

Например, если \(a = [2, 1, 1, 3, 2]\) то можно дать три следующих факта: \(t_1=1, l_1=2, r_1=4\) (подотрезок массива \([a_2, a_3, a_4] = [1, 1, 3]\) отсортирован), \(t_2=0, l_2=4, r_2=5\) (подотрезок массива \([a_4, a_5] = [3, 2]\) не отсортирован), и \(t_3=0, l_3=3, r_3=5\) (подотрезок массива \([a_3, a_5] = [1, 3, 2]\) не отсортирован).

Вы не знаете массив \(a\). Найдите любой массив, удовлетворяющий всем фактам.

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

Первая строка содержит два числа \(n\) и \(m\) (\(2 \le n \le 1000, 1 \le m \le 1000\)).

Следующие \(m\) строк содержат по три числа \(t_i\), \(l_i\) и \(r_i\) (\(0 \le t_i \le 1, 1 \le l_i < r_i \le n\)).

Если \(t_i = 1\), то подотрезок массива \(a_{l_i}, a_{l_i + 1}, \dots , a_{r_i}\) отсортирован. Иначе (если \(t_i = 0\)) подотрезок массива \(a_{l_i}, a_{l_i + 1}, \dots , a_{r_i}\) не отсортирован.

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

Если не существует массива, удовлетворяющего всем фактам, в единственной строке выведите NO (в любом регистре).

Если такой массив существует, в первой строке выведите YES (в любом регистре). Во второй строке выведите \(n\) чисел \(a_1, a_2, \dots, a_n\) (\(1 \le a_i \le 10^9\)) — массив \(a\), удовлетворяющий всем фактам. Если существует несколько подходящих массивов, выведите любой.


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

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

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