Условие задачи вырисовывается ниже, наполняя вас определенностью.
Рассмотрим таблицу, в которой некоторые клетки пустые, а некоторые заполнены. Назовем клетку в этой таблице хорошей, если, начиная с этой клетки, вы можете выйти из таблицы, двигаясь вверх и влево только через пустые клетки. Это касается и стартовой клетки, поэтому все заполненные клетки не являются хорошими. Обратите внимание, вы можете покинуть таблицу из любой крайней левой клетки (в первом столбце), двигаясь влево, а также из любой крайней верхней клетки (в первой строке) — двигаясь вверх.
Назовем таблицу определяемой, если, зная только то, какие клетки являются хорошими, а какие — нет, мы можем точно определить, какие клетки заполнены, а какие нет.
Вам дана таблица $$$a$$$ размером $$$n \times m$$$, т. е. таблица с $$$n$$$ строками и $$$m$$$ столбцами. Вам нужно ответить на $$$q$$$ запросов ($$$1 \leq q \leq 2 \cdot 10^5$$$). Каждый запрос задается двумя целыми числами $$$x_1, x_2$$$ ($$$1 \leq x_1 \leq x_2 \leq m$$$) и спрашивает, является ли часть таблицы $$$a$$$, состоящая из столбцов $$$x_1, x_1 + 1, \ldots, x_2 - 1, x_2$$$, определяемой.
Первая строка содержит два целых числа $$$n, m$$$ ($$$1 \leq n, m \leq 10^6$$$, $$$nm \leq 10^6$$$) — размеры таблицы $$$a$$$.
Далее следуют $$$n$$$ строк. В $$$y$$$-й строке содержится $$$m$$$ символов, $$$x$$$-й из которых «X», если клетка на пересечении $$$y$$$-й строки и $$$x$$$-го столбца заполнена, и «.», если она пуста.
Следующая строка содержит одно целое число $$$q$$$ ($$$1 \leq q \leq 2 \cdot 10^5$$$) — количество запросов.
Далее следуют строки по $$$q$$$. Каждая строка содержит два целых числа $$$x_1$$$ и $$$x_2$$$ ($$$1 \leq x_1 \leq x_2 \leq m$$$), представляющих запрос, спрашивающий, является ли часть таблицы $$$a$$$, содержащая только столбцы $$$x_1, x_1 + 1, \ldots, x_2 - 1, x_2$$$, определяемой.
Для каждого запроса выведите одну строку, содержащую «YES», если часть таблицы, указанная в запросе, определяемая, и «NO» в противном случае. Вывод не чувствителен к регистру (поэтому «YEs» и «No» также будут приняты).
4 5 ..XXX ...X. ...X. ...X. 5 1 3 3 3 4 5 5 5 1 5
YES YES NO YES NO
Для каждого запроса из примера соответствующая часть таблицы изображена дважды: сначала в исходном формате, затем с каждой клеткой, помеченной как «E», если она хорошая, и «N» в противном случае.
Для первого запроса:
..X EEN
... EEE
... EEE
... EEE
Для второго запроса:
X N
. E
. E
. E
Обратите внимание, что вы можете выйти из таблицы, пройдя влево из любой крайней левой клетки (или вверх из любой крайней верхней клетки); вам не нужно достигать левой верхней угловой клетки, чтобы выйти из таблицы.
Для третьего запроса:
XX NN
X. NN
X. NN
X. NN
Эта часть таблицы не может быть определена только по тому, является ли каждая клетка хорошей, потому что таблица, показанная ниже, также производит показанную выше «таблицу выходимости клеток»:
XX
XX
XX
XX
Для четвертого запроса:
X N
. E
. E
. E
Для пятого запроса:
..XXX EENNN
...X. EEENN
...X. EEENN
...X. EEENN
Этот запрос — это просто вся таблица. Она не может быть определена только по тому, является ли каждая клетка хорошей, потому что таблица, показанная ниже, также производит показанную выше «таблицу выходимости клеток»:
..XXX
...XX
...XX
...XX
Название |
---|