| 시간 제한 | 메모리 제한 | 제출 | 정답 | 맞힌 사람 | 정답 비율 |
|---|---|---|---|---|---|
| 1 초 | 1024 MB | 2 | 1 | 1 | 50.000% |
Пафнутий и его друзья — большие любители разнообразных настольных игр. Особенно им нравятся игры, требующие как можно быстрее производить в уме непростые вычисления, поэтому абсолютным хитом их вечерних посиделок в аудиториях НУОП (Неизвестного университета олимпиадного программирования) стала игра «Шустрая черепашка». В комплект игры входят:
Правила игры очень просты. Игроки последовательно разыгрывают игровые карточки. Как только открывается очередная карточка, игрокам необходимо вычислить, сколько существует хороших троек клеток (ai, bj, ck), где ai ∈ A, bj ∈ B, ck ∈ C. Тройка клеток называется хорошей, если можно провести черепашку из стартовой клетки ai в конечную клетку ck, не посещая при этом клетку bj. На перемещение черепашки наложено три условия:
Так как таблицу с правильными ответами создатели не включили в комплект, в пылу игры постоянно возникают споры о правильности того или иного значения. Для установления истины ребята попросили вас посчитать ответы для данного комплекта.
Первая строка входного файла содержит два целых числа N и M (1 ≤ N, M ≤ 150) — количество строк и столбцов игрового поля.
Следующие N строк по M символов описывают игровое поле в порядке следования сверху вниз, слева направо. Символ ‘.’ соответствует свободной клетке, а ‘#’ — занятой. Строки нумеруются от 1 до N, столбцы — от 1 до M.
Следующая строка содержит целое число Q (1 ≤ Q ≤ 100 000) — количество игровых карточек.
Далее следуют Q блоков, описывающих карточки. Каждый блок состоит из трех строк, описывающих множества A, B и C соответственно. Первое число описания определяет размер соответствующего множества, после чего перечисляются его клетки. Каждая клетка задается двумя числами — номером строки и номером столбца. Все клетки в описании различны. Смотрите комментарии к примеру для лучшего понимания формата входных данных.
Гарантируется, что все множества непусты, все клетки всех множеств являются свободными и никакая клетка не принадлежит более чем одному множеству из какой-то карточки.
Гарантируется, что суммарный размер всех множеств на всех игровых карточках не превосходит 300 000, а именно: Σ(|Ai| + |Bi| + |Ci|) ≤ 300 000.
Дополнительно гарантируется, что суммарное количество всех троек (и хороших, и нет) по всем карточкам не превосходит 2 · 107: Σ(|Ai| · |Bi| · |Ci|) = Qtotal ≤ 2 · 107.
В выходной файл выведите ровно Q чисел по одному на строке — правильные ответы на карточки в порядке их следования во входном файле.
5 6 ..##.. ....#. .#.#.. .#...# ..#... 2 1 1 1 3 2 1 2 3 4 3 1 5 6 2 1 2 2 1 2 3 1 3 3 2 5 1 5 6
1 3
В приведенном примере игровой комплект содержит две карточки.
Во всех тройках первой карточки черепашка стартует в верхнем левом углу и финиширует в правом нижнем. Несложно видеть, что это возможно сделать, только если из трех элементов множества B блокируется первая клетка второй строки, то есть хорошей тройкой является (1, 1) − (2, 1) − (5, 6).
На второй карточке хорошими являются тройки: (1, 2)−(3, 1)−(5, 6), (2, 1)−(3, 1)−(5, 6), (2, 1) − (3, 1) − (5, 1).