Задача №1698. Гомо или гетеро?
Максимальное время работы на одном тесте: |
3 секунды |
Максимальный объем используемой памяти: |
256 мегабайт |
Определим две операции над списком целых чисел:
- insert number – добавляет заданное число в конец списка
- delete number – удаляет первое вхождение заданного числа из списка. Если список не содержит заданного числа, то ничего не меняется.
Например, результатом добавления числа 4 в список [1, 2, 1] будет список [1, 2, 1, 4]. Если мы удалим число 1 из этого списка, то получим список [2, 1, 4], но если мы попытаемся удалить число 3 из списка [1, 2, 1, 4], то список останется неизменным.
Список называется гомогенным, если он содержит хоты бы два одинаковых числа и гетерогенным, если содержит хотя бы два различных числа. Например, список [2, 2] является гомогенным, список [2, 1, 4] – гетерогенным, список [1, 2, 1, 4] – одновременно и тем и другим, а пустой список не является ни гомогенным, ни гетерогенным.
Напишите программу, которая по последовательности операций добавления и удаления в пустой список, определяет после каждой из операций, является ли список гомогенным или гетерогенным.
Формат входных данных
Первая строка содержит целое число n – количество операций (1 ≤ n ≤ 100 000).
Следующие n строк содержат описания операций. Каждая операция описывается словом “insert” или “delete” и числом k – аргументом операции (-109 ≤ k ≤ 109).
Формат выходных данных
Для каждой операции выведите строку, содержащую единственное слово, описывающее состояние списка после этой операции:
- “both” - если список одновременно является и тем и другим
- “hetero” - если список является гетерогенным
- “homo” - если список является гомогенным
- “neither” - если список не принадлежит ни одному типу.
Пример
Входные данные |
Выходные данные |
11 insert 1 insert 2 insert 1 insert 4 delete 1 delete 3 delete 2 delete 1 insert 4 delete 4 delete 4 |
neither hetero both both hetero hetero hetero neither homo neither neither |