408693: GYM103264 B Посылки в заморозку
Description
Всеберляндская командная олимпиада школьников по программированию (ВКОШП) проходит по стандартным правилам чемпионата мира по программированию: $$$n$$$ командам дается 5 часов на решение $$$m$$$ задач, и по традиции в последний час не показываются результаты попыток команд, видно только, какая команда посылала какие задачи.
Место, занимаемое командой, определяется следующим образом: $$$(\text{количество команд, у которых больше решенных задач}) +$$$ $$$(\text{количество команд, у которых такое же число решенных задач, но строго меньше штрафное время}) + 1$$$. При равенстве числа задач и штрафного времени команды делят занимаемое ими место. Штрафное время определяется как сумма времен первых успешных попыток по всем сданным задачам плюс 20 минут за каждую неудачную попытку по успешно сданной задаче. Обратите внимание, если команда уже успешно сдала задачу, все последующие посылки не влияют на штрафное время, а также что штрафное время за несданные задачи не начисляется. Если
Никита не любит интригу, а поэтому во время заморозки постоянно пытается угадать, может ли та или иная команда быть лидером. При этом он предполагает, что если команда послала некоторую задачу в заморозку, то все предыдущие посылки в заморозку по этой задаче были неверные. Однако, команды могут перепосылать сданные до заморозки задачи. Исходя из этого, вам нужно обрабатывать несколько запросы двух видов:
- 1 $$$s$$$ $$$i$$$ $$$t$$$ — команда с названием $$$s$$$ послала задачу $$$i$$$ во время $$$t$$$.
- 2 $$$s$$$ — Никиту интересует, может ли команда с названием $$$s$$$ в данный момент быть на первом месте.
В первой строке записаны два числа $$$n$$$ и $$$m$$$ ($$$1\le n \le 400$$$, $$$8\le m \le 15$$$) — количество команд и задач соответственно.
Далее следует $$$n$$$ описаний результатов команд. Каждой описание начинается с непустой строки $$$s$$$ длиной не более 100 символов — названия команды. Название может содержать в себе заглавные и строчные буквы латинского алфавита, цифры, а также символы -, # и _. Все названия различны.
Далее в $$$m$$$ строках содержатся результаты команды по каждой задаче по итогам первых четырех часов. В начале записан вердикт по текущей задаче: . — команда не посылала данную задачу, + — команда сдала эту задачу, - — команда сделала несколько неудачных посылок, но не сдала задачу. Если вердикт не равен ., то далее следуют два числа $$$k$$$ и $$$t$$$ ($$$0 \le k \le 100$$$, $$$0 \le t \le 239$$$) — количество неудачных попыток и время последней неудачной или первой удачной (если команда сдала задачу) попытки.
Описания команд разделяются пустой строкой.
После всех описаний записано целое число $$$q$$$ ($$$1\le q \le 2000$$$) — количество запросов. Далее в $$$q$$$ строках записаны запросы согласно формату выше. Гарантируется, что для каждого запроса первого типа $$$240 \le t \le 299$$$. Гарантируется, что все запросы упорядочены по времени. Задачи в запросах первого типа нумеруются от $$$1$$$ до $$$m$$$. Также гарантируется что в запросах встречаются только команды, описанные выше.
Выходные данныеДля каждого запроса второго типа в отдельной строке выведите YES, если данная команда может быть на первом месте в соответствующий момент, и NO в противном случае.
ПримерВходные данные3 8 lol . + 0 12 + 3 29 . - 4 201 - 1 100 + 1 56 + 2 228 kek . + 0 23 + 0 165 - 36 200 . . + 4 55 . cheburek - 5 239 + 1 5 + 0 30 . + 2 229 . + 10 45 + 20 203 8 1 lol 1 240 2 lol 1 kek 1 256 2 kek 1 kek 4 278 2 kek 1 cheburek 2 298 2 cheburekВыходные данные
YES NO NO YESПримечание
Изначальные результаты команд: lol — 4 задачи, 445 минут штрафа; kek — 3 задачи, 323 минуты штрафа; cheburek — 5 задач, 1172 минуты штрафа.
Если посылка команды lol пройдет, то у нее станет 5 задач и 685 минут штрафа и она будет на первом месте.
Даже если пройдут обе посылки команды kek у нее будет 5 задач и 1577 минут штрафа и она не сможет подняться на первое место.