Skip to content

Latest commit

 

History

History
92 lines (80 loc) · 3.27 KB

File metadata and controls

92 lines (80 loc) · 3.27 KB

A. Дек

Гоша реализовал структуру данных Дек, максимальный размер которого определяется заданным числом. Методы push_back(x), push_front(x), pop_back(), pop_front() работали корректно. Но, если в деке было много элементов, программа работала очень долго. Дело в том, что не все операции выполнялись за O(1).
Помогите Гоше! Напишите эффективную реализацию.

Внимание: при реализации используйте кольцевой буфер.

Формат ввода

В первой строке записано количество команд n — целое число, не превосходящее 100000. Во второй строке записано число m — максимальный размер дека. Он не превосходит 50000. В следующих n строках записана одна из команд:

  • push_back(value) – добавить элемент в конец дека. Если в деке уже находится максимальное число элементов, вывести «error».
  • push_front(value) – добавить элемент в начало дека. Если в деке уже находится максимальное число элементов, вывести «error».
  • pop_front() – вывести первый элемент дека и удалить его. Если дек был пуст, то вывести «error».
  • pop_back() – вывести последний элемент дека и удалить его. Если дек был пуст, то вывести «error».

Value — целое число, по модулю не превосходящее 1000.

Формат вывода

Выведите результат выполнения каждой команды на отдельной строке. Для успешных запросов push_back(x) и push_front(x) ничего выводить не надо.

Пример 1

Ввод Вывод
4
4
push_front 861
push_front -819
pop_back
pop_back
861
-819




Пример 2

Ввод Вывод
7
10
push_front -855
push_front 0
pop_back
pop_back
push_back 844
pop_back
push_back 823
-855
0
844