Четыре задачи на очередь и дек: обычная очередь, круговая очередь, окно из последних чисел и дек, который всё время разворачивают.
- Сначала читайте команду как
string(илиchar), а число — только если у команды оно есть. - Круговая очередь: храните в очереди пары (номер задачи, сколько осталось), а
часы — в
long long. - Для первого отрицательного в каждом окне очередь хранит позиции, а не значения: тогда видно, какие из них уже выехали из окна.
- Для обратимого дека заведите флаг
rev. Пока онtrue, каждая команда, которая называет сторону, работает с другим концом.