3966. Ярый коллекционер бабочек

 

Как известно, Андрей Сергеевич – ярый коллекционер бабочек. Он имеет огромную коллекцию, экспонаты которой собраны со всего мира. Будем считать, что в мире существует 2 * 109 видов бабочек.

Чтобы не запутаться, Андрей Сергеевич присвоил каждому виду уникальный номер. Нумерация бабочек всегда начинается с единицы. Теперь он хочет знать, есть ли бабочка с видом k в его коллекции, или же её придётся добывать, затрачивая уйму сил и денег.

 

Вход. В первой строке содержится количество видов бабочек n (1 n ≤ 105) в коллекции Андрея Сергеевича. В следующей строке находятся n упорядоченных по возрастанию чисел – номера видов бабочек в коллекции. Все виды бабочек в коллекции имеют различные номера.

В третьей строке записано количество видов бабочек m (1 m ≤ 105), про которых Андрей Сергеевич хочет узнать, есть ли они у него в коллекции или же нет. В последней строке содержатся m чисел – номера видов бабочек, наличие которых необходимо проверить.

 

Выход. Выведите m строк. Для каждого запроса выведите YES, если бабочка с данным номером содержится в коллекции, и NOв противном случае.

 

Пример входа

Пример выхода

7

10 47 50 63 89 90 99

4

84 33 10 82

NO

NO

YES

NO

 

 

РЕШЕНИЕ

структуры данных – set

 

Анализ алгоритма

Номера видов бабочек в коллекции будем хранить во множестве s. Тогда проверка того, что бабочка вида x имеется у Андрея Сергеевича, сводится к проверке принадлежности числа x множеству s.

 

Реализация алгоритма

Номера видов бабочек в коллекции храним во множестве s.

 

set<int> s;

 

Читаем входные данные.

 

scanf("%d", &n);

for (i = 0; i < n; i++)

{

  scanf("%d", &x);

  s.insert(x);

}

 

Обрабатываем m запросов.

 

scanf("%d", &m);

for (i = 0; i < m; i++)

{

 

Проверяем, имеется ли в коллекции бабочка вида x. Ответ утвердительный, если число x содержится во множестве s.

 

  scanf("%d", &x);

  if (s.find(x) != s.end()) puts("YES");

  else puts("NO");

}