e-olymp
Задачи

Abusing 1Fit limits

Abusing 1Fit limits

1Fit - это стартап на основе абонемента, с помощью 1Fit Вы можете посещать несколько спортивных залов, не покупая отдельные абонементы.

В 1Fit имеется n фитнес, m тренировок и k спортивных видов. Все объекты пронумерованы последовательно, начиная с 1. Каждая тренировка имеет fitnessID и sporttypeID.

Существуют r правил, каждое правило описывает лимит бронирования для одного пользователя. В каждом правиле указывается фитнес, список видов спорта и лимит, limit = -1 означает неограниченное количество посещений, например если fitnessID = 3 и sporttypes = [1, 2, 6] и limit = 7 означает, что количество посещений с 3-им фитнес и спортивных тренировок видов 1, 2 или 6 не может превышать 7. Одна тренировка не может быть забронирована несколько раз. Гарантируется, что каждая пара fitnessID и sporttypeID может появляться не более чем в одном правиле.

Айсултан недавно купил 1Fit подписку, чтобы оздоровиться. Он отправил q последовательных запросов на тренировки. Для каждого запроса сервер должен вернуть либо 'yes' либо 'no' - тренировка успешно забронирована или бронирование выполнено неправильно. Напишите программу для обработки всех запросов Айсултана.

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

Первая строка содержит три натуральных числа n, m и k (1n, m, k100) - количество фитнес, тренировок и спортивных видов. Каждая из следующих m строк содержит два целых числа fitnessID, sporttypeID (1fitnessIDn, 1sporttypeIDk) - описание тренировок: fitness ID и sport type ID тренировки. Следующая строка задает количество правил r (1r100). Каждая из следующих r строк содержит сначала ID fitness, за которым следует количество спортивных видов, список спортивных видов id и лимит в конце. Следующая строка содержит количество запросов Айсултана q (1q100). Каждая из следующих q строк содержит одно целое число - описание запроса: ID тренировки.

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

Для каждого запроса выведите 'yes' или 'no'.

Note

В примере имеются 3 фитнеса, 8 тренировок и 3 вида спорта. Тренировками являются: (1, 1), (1, 2), ..., то есть тренировка номер 1 в фитнесе с ID 1 с видом спорта ID 1, тренировка номер 2 в фитнесе с ID 1 с видом спорта ID 2, ...

Имеется 4 правила:

  1. fitnessID = 1, sporttypeIDs = [2] limit = -1 - Айсултан может забронировать тренировки с fitnessID = 1 и sporttypeID = 2 неограниченное количество раз;

  2. fitnessID = 2, sporttypeIDs = [2, 3] limit = 2 - Aisultan can book trainings with fitnessID = 2 and sporttypeID = 2 or fitnessID = 2 and sporttypeID = 3 no more than twice in total;

  3. fitnessID = 3, sporttypeIDs = [1] limit = -1 - Aisultan can book trainings with fitnessID = 3 and sporttypeID = 1;

  4. fitnessID = 1, sporttypeIDs = [1] limit = 1 - Aisultan can book trainings with fitnessID = 1 and sporttypeID = 1 no more than once;

The first three queries Aisultan can book successfully. 4-th query will be 'no' because Aisultan cannot book 2nd training twice. Also 7th query's response is 'no', because Aisultan cannot book training with fitnessID = 1 and sporttypeID = 1 twice.

Лимит времени 1 секунда
Лимит использования памяти 128 MiB
Входные данные #1
3 8 3
1 1
1 2
2 2
2 3
3 1
3 3
3 1
1 1
4
1 1 2 -1
2 2 2 3 2
3 1 1 -1
1 1 1 1
9
1
2
3
2
4
5
8
6
7
Выходные данные #1
yes
yes
yes
no
yes
yes
no
no
yes
Источник 2019 Fall KBTU OPEN, Задача L