Контест Middle Дженерики обновлено

Обобщённая очередь на кольцевом буфере на Go

Условие

Реализуйте очередь FIFO на кольцевом буфере. Начальная ёмкость буфера 2. Если при push буфер заполнен, ёмкость удваивается (элементы переносятся в новый буфер). Ёмкость никогда не уменьшается.

Операции: push x (x без пробелов), pop (вывести и удалить первый), peek (вывести первый), size (вывести число элементов). Для pop и peek на пустой очереди выведите empty. В конце выведите cap C, где C итоговая ёмкость.

Ввод: q (1 ≤ q ≤ 4000), затем операции.

Пример

8
push 1
push 2
push 3
pop
peek
size
pop
pop
1
2
2
2
3
cap 4

Как подойти

Queue[T any] с buf, head, size; рост вдвое с переупорядочиванием; Pop возвращает (T, bool).

Решите в тренажёре

Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.