Пускай у нас есть два стека, которые за О(1) могут корректным образом выполнять операции добавки в конец, взятия значения последнего элемента, удаления последнего элемента, нахождения количества элементов в стеке.
Спрашивается, можно ли реализовать очередь, используя только эти два стека. Необходимо корректным образом добавлять элемент в конец очереди, брать значение в начале очереди, удалять значение в начале очереди и возвращать размер очереди.
Спасибо за внимание. Задача из уст Ставровского Андрея Борисовича.
Мне в голову пришло только решение, которое выполняет добавку за константу и извлечение за линию.
В тему: http://codeforces.net/blog/entry/5309
Огромное вам спасибо.
Вроде все ок. Если найдете ошибки, пишите. Извините за говнокод, но идея вроде ясна. Если нет, то распишу подробнее.
UPD. Не успел, уже ответили(
Здесь описана идея работающая за амортизированное О(1).
http://e-maxx.ru/algo/stacks_for_minima
Смотрите раздел "Модификация очереди. Способ 2"
UPD: Опередили
Огромное спасибо всем ответившим :)
Мне казалось, я больше тебя не встречу после того случая, но судьба решила по-другому...
ПРЕСВЯТЫЕ УГОДНИКИ!!!11 ПОСОНЫ ТУТ ТСОЯ ЗАТРАЛИЛИ