Закупаемся в магазине

Решим задачу, используя два указателя $$$l, r$$$ и очередь с максимумами $$$q$$$.

Давайте поддерживать сумму элементов очереди $$$S_q$$$ (когда элемент добавляется в очередь, будем прибавлять его в $$$S_q$$$, когда он удаляется из очереди, будем его вычитать из $$$S_q$$$). Будем двигать правый указатель $$$r$$$ и добавлять новые элементы в очередь $$$q$$$, пока сумма очереди без максимума меньше либо равна количеству наших денег (формально $$$S_q - max(q) <= s)$$$. Иначе будем двигать левый указатель $$$l$$$ и удалять старые элементы из очереди $$$q$$$.

В конце программы выведем максимальный размер очереди $$$q$$$, который был достигнут за работу программы  — максимальное количество товаров, которые мы можем купить.