Олимпиадный тренинг

Задача . C. Игра с мультимножеством


В этой задаче вам изначально дано пустое мультимножество. Вам нужно обработать два типа запросов:

  1. ADD \(x\) — добавить элемент, равный \(2^{x}\), в мультимножество;
  2. GET \(w\) — сказать, возможно ли взять сумму некоторого подмножества текущего мультимножества и получить значение, равное \(w\).
Входные данные

Первая строка содержит одно целое число \(m\) (\(1 \le m \le 10^5\)) — количество запросов.

Затем следуют \(m\) строк, каждая из которых содержит два целых числа \(t_i\), \(v_i\), обозначающих \(i\)-й запрос. Если \(t_i = 1\), то \(i\)-й запрос — ADD \(v_i\) (\(0 \le v_i \le 29\)). Если \(t_i = 2\), то \(i\)-й запрос — GET \(v_i\) (\(0 \le v_i \le 10^9\)).

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

Для каждого запроса GET выведите YES, если возможно выбрать подмножество с суммой, равной \(w\), или NO, если это невозможно.


Примеры
Входные данныеВыходные данные
1 5
1 0
1 0
1 0
2 3
2 4
YES
NO
2 7
1 0
1 1
1 2
1 10
2 4
2 6
2 7
YES
YES
YES

time 1500 ms
memory 256 Mb
Правила оформления программ и список ошибок при автоматической проверке задач

Статистика успешных решений по компиляторам
 Кол-во
С++ Mingw-w643
Комментарий учителя