| 시간 제한 | 메모리 제한 | 제출 | 정답 | 맞힌 사람 | 정답 비율 |
|---|---|---|---|---|---|
| 1 초 | 2048 MB | 34 | 7 | 7 | 35.000% |
Участники образовательных программ иногда задумываются, почему между двумя программами обычно бывает перерыв в несколько дней. Ответ прост: сотрудникам Сириуса необходимо после очередной программы привести в порядок жилые номера.
На одном этаже в гостинице ОЦ <<Сириус>> находятся $n$ номеров, пронумерованных от $1$ до $n$. После проведения образовательной программы все эти номера нуждаются в ремонте.
К ремонтным работам привлечены $k$ сотрудников, пронумерованных от $1$ до $k$. За $i$-м сотрудником закреплён диапазон номеров с $l_i$ по $r_i$ включительно, а также зафиксирован номер $m_i$ из этого диапазона, с которого он должен начать обход своих номеров. Диапазоны номеров у разных сотрудников могут пересекаться и даже совпадать.
Сотрудники в некотором порядке направляются с базы для выполнения работ. Следующий сотрудник направляется только после возвращения предыдущего на базу.
Когда $i$-го сотрудника направляют на выполнение работ, он сначала идёт в номер $m_i$. Если этот номер всё ещё нуждается в ремонте, то сотрудник ремонтирует его, а также посещает все номера из диапазона с $l_i$ по $r_i$, за который он отвечает, и ремонтирует все нуждающиеся в ремонте номера из этого диапазона, после чего возвращается на базу. После этого все номера из диапазона с $l_i$ по $r_i$ более не нуждаются в ремонте.
Если же первый посещённый сотрудником номер $m_i$ не нуждается в ремонте, поскольку его уже отремонтировали ранее направленные для выполнения работ коллеги, то сотрудник сразу возвращается на базу, надеясь, что коллеги уже отремонтировали и все остальные номера из его диапазона. В этом случае некоторые другие номера из диапазона с $l_i$ по $r_i$ всё еще могут нуждаться в ремонте.
Определите, можно ли при подобном подходе сотрудников к выполнению своих обязанностей направить их всех для выполнения работ в таком порядке, чтобы в итоге все номера от $1$ до $n$ оказались отремонтированы.
Каждый тест состоит из нескольких наборов входных данных. В первой строке находится одно целое число $t$ ($1 \leqslant t \leqslant 10^5$) --- количество наборов входных данных. Далее следует описание наборов входных данных.
Первая строка каждого набора входных данных содержит два целых числа $n$ и $k$ ($1 \leqslant n, k \leqslant 5 \cdot 10^5$) --- количество номеров и количество сотрудников соответственно.
В каждой из последующих $k$ строк содержится три целых числа $l_i$, $m_i$ и $r_i$ ($1 \leqslant l_i \leqslant m_i \leqslant r_i \leqslant n$) --- первый номер диапазона ответственности $i$-го сотрудника, номер из диапазона, с которого он должен начать обход своих, и последний номер из его диапазона, соответственно.
Гарантируется, что сумма $n$ и $k$ по всем наборам входных данных не превосходит $5 \cdot 10^5$.
Для каждого набора входных данных в отдельной строке выведите <<YES>>, если можно отремонтировать все номера, и <<NO>> --- в противном случае.
Обозначим за $N$ сумму $n$ по всем наборам входных данных, за $K$ --- сумму $k$ по всем наборам входных данных.
| 번호 | 배점 | 제한 |
|---|---|---|
| 1 | 5 | $K \leqslant 10\,000$, $m_i=l_i$ |
| 2 | 5 | $N \leqslant 500$, $k \leqslant 8$ |
| 3 | 2 | $n \leqslant 18$, $K \leqslant 500$ |
| 4 | 12 | $n \leqslant 50$, $K \leqslant 50$ |
| 5 | 9 | $n \leqslant 150$, $K \leqslant 150$ |
| 6 | 8 | $N \leqslant 500$, $K \leqslant 500$ |
| 7 | 6 | $K \leqslant 10\,000$, За каждым сотрудником закреплен номер 1 или номер $n$ |
| 8 | 18 | $K \leqslant 10\,000$, Для каждого сотрудника найдется номер, который закреплён только за ним |
| 9 | 3 | Для каждого сотрудника найдется номер, который закреплён только за ним |
| 10 | 4 | $K \leqslant 10\,000$, $r_i-l_i=r_j-l_j$ для любых $i$, $j$ |
| 11 | 4 | $K \leqslant 10\,000$, Любое $m_i$ совпадает с $l_i$ или $r_i$ |
| 12 | 4 | $n \leqslant 10\,000$, $K \leqslant 10\,000$ |
| 13 | 6 | $K \leqslant 10\,000$ |
| 14 | 14 |
2 5 2 3 4 5 1 3 3 5 3 1 2 4 2 4 5 3 3 3
YES NO
В первом наборе входных данных из примера нужно сначала направить для выполнения ремонтных работ второго сотрудника, он отремонтирует номера с первого по третий. Затем первый сотрудник направится в номер 4. Так как он еще нуждается в ремонте, первый сотрудник отремонтирует оставшиеся номера в своем диапазоне. В результате все номера будут отремонтированы.
Во втором наборе данных выбрать подходящий порядок отправки сотрудников невозможно.