Покупка (100 баллов)
Задачу добавил: alef
Успешно сдано решений: 20
Покупать обои было решено в торговой сети «ГиперСтрой». Магазины этой торговой сети расположены в разных точках города, но в наличии там только образцы товаров; получать товар нужно по оплаченному чеку на складе. Поэтому покупка выглядит следующим образом: в магазине выписывают накладную, которую нужно оплатить (делать это сразу необязательно). После этого с оплаченной накладной следует поехать на склад и получить там товар. Оплаченная накладная действительна в течение длительного времени, и покупатели приезжают на склад, когда им удобно. Когда покупатель приезжает с накладной, необходимо проверить, есть ли она в списке оплаченных. В случае успешного завершения проверки товар может быть отпущен. Однако могут возникнуть ситуации, когда в наличии имеется не весь оплаченный товар или покупатель не может забрать весь товар одновременно из-за проблем с доставкой. Тогда покупатель может забрать часть товара, и в накладной отмечается, что именно было получено. Когда по накладной получен весь товар, она удаляется из списка.
Проблема состоит в том, что проверка, есть ли накладная в списке оплаченных происходит довольно долго, образуются очереди…
Ваша задача – написать программу, которая поможет сотрудникам быстро проверять, удалять и добавлять накладные в список оплаченных.
Формат входного файла input.txt
Первая строка – целое число N – количество операций, которые совершаются с накладными (0<=N<=65000)
Каждая из следующих N строк содержит информацию о каком-либо одном действии, записанную в таком формате:
<знак операции> <пробел> <номер накладной>
знак операции – это один из символов “>”, “<”, “?” (разумеется, без кавычек);
“>” означает, что накладная добавляется в список оплаченных,
“<” – накладная удаляется из списка оплаченных
“?” – проверка, имеется ли накладная в списке оплаченных
номер накладной – целое число от 1 до 2^31
По статистике, максимальное количество накладных в списке оплаченных никогда не превосходит 10000.
Формат выходного файла output.txt
Выходной файл содержит столько строк, сколько было операций проверки во входном файле. Каждая из строк содержит результат очередной проверки: YES, если такая накладная присутствовала в списке оплаченных, и NO в противном случае
Пример входного файла:
8
> 123456
? 123456
> 987654
? 123456
? 102030
< 123456
? 123456
? 987654
Пример выходного файла
YES
YES
NO
NO
YES