Queue Data Structure
Минимум в очереди
На вход программы подается набор операций с очередью. Каждая операция состоит в добавлении или удаления элемента из очереди. После выполнения каждой операции найдите наименьшее число, которое находится в очереди. Сложите все полученные числа и получите ответ. Если после некоторой операции очередь оказалась пуста, то ничего не прибавляйте к ответу. Если выполнить удаление невозможно, так как очередь пуста, то не выполняйте его.
Входные данные
Входные данные генерируются в самой программе. На вход подаются параметры для генерации входной последовательности.
Первое число n (1 ≤ n ≤ 10^6
) содержит количество операций с очередью. Затем идут четыре неотрицательных числа a, b, c, x[0]
, не превосходящие 10000.
Для получения входных данных сгенерируем последовательность x.
Первое число в генерируемой последовательности x[1]
. Первое, а также каждое следующее число вычисляется из предыдущего по формуле:
x[i]
= (a * x[i-1]
* x[i-1]
+ b * x[i-1]
+ c) / 100 mod 10^6
,
где "/" - операция целочисленного деления, а "mod" - остаток от деления.
Если x[i]
mod 5 < 2, то необходимо удалить число из очереди. В противном случае нужно добавить в очередь число x[i]
.
Выходные данные
Выведите искомую сумму.
Пример
2 0 0 1 81
0
7 2 1 176 36
60
9 5 6 777 30
2165995