На уроке
информатики Юре стало очень грустно, поэтому он придумал себе забаву.
В начале у
него есть пустое множество. На каждом следующем этапе он загадывает число и
проверяет, принадлежит ли оно множеству. Если число принадлежит множеству, Юра
выкрикивает “Yes”. Если нет, он выкрикивает “No” и
добавляет его в множество. Перед тем как загадать новое число, Юра выкрикивает
количество элементов в множестве.
Учителю
надоели крики Юрия, поэтому он заставил его написать программу, которая будет кричать
вместо него. Но Юра не умеет программировать, поэтому попросил помощи у Вас.
Вход. В первой
строке задано натуральное число n (1
≤ n ≤ 105). В
каждой из следующих n строк задано
целое число, которое задумал Юра. Юра умеет загадывать числа только на
промежутке от -109 до 109.
Выход. В
отдельной строке выведите то, что выкрикивал бы Юра на каждый запрос.
Пример входа 1 |
Пример выхода 1 |
5 1 2 3 4 1 |
No 1 No 2 No 3 No 4 Yes 4 |
|
|
Пример входа 2 |
Пример выхода 2 |
3 1 1 1 |
No 1 Yes 1 Yes 1 |
структура данных set
В задаче
следует промоделировать работу с множеством set. Пусть x – число, задуманное Юрой. Если x уже присутствует в множестве, выводим
“Yes” и размер множества. Иначе добавляем x
в множество, выводим “No” и размер множества.
Реализация алгоритма
Объявим множество
s.
set<int> s;
Читаем
количество запросов n.
scanf("%d",&n);
Последовательно обрабатываем n запросов.
for(i = 1; i <= n; i++)
{
Читаем число x,
которое задумал Юра.
scanf("%d",&x);
Если числа x
нет в множестве s, то заносим его туда, выводим “No” и мощность
множества.
if(s.find(x)
== s.end())
{
s.insert(x);
printf("No %d\n",s.size());
}
else
Если число x
присутствует в множестве s, то выводим “Yes” и мощность множества.
printf("Yes %d\n",s.size());
}
Java реализация
import java.util.*;
public class Main
{
public static void main(String[] args)
{
Scanner con = new Scanner(System.in);
TreeSet<Integer> s = new TreeSet<Integer>();
int n = con.nextInt();
for(int i = 0; i < n; i++)
{
int x = con.nextInt();
if (s.contains(x))
System.out.println("Yes " + s.size());
else
{
s.add(x);
System.out.println("No " + s.size());
}
}
con.close();
}
}
Python реализация
Читаем
количество запросов n.
n = int(input())
Объявим множество s.
s = set({})
Последовательно
обрабатываем n запросов.
for _ in range(n):
Читаем
число x, которое задумал Юра.
x = int(input())
Если число
x присутствует в множестве s,
то выводим “Yes”.
if x in s:
print("Yes", end = ' ')
else:
Если числа
x нет в множестве s, то
заносим его туда и выводим “No”.
s.add(x)
print("No", end = ' ')
После сообщения “Yes” или “No” выводим мощность
множества.
print(len(s))