Идея решения такая, поддерживаем пару чисел дающих минимальное произведение (пусть они будут называться lhs и rhs) - будем обновлять эту пару при каждом новом прочитанном числе.
Кроме пары дающей минимальное произведение храним так же 6 последних прочитанных чисел. Будем называть их a1, a2, a3, a4, a5, a6, где a1 - самое старое, а a6 - самое новое. При каждом новом прочитанном числе мы будем "сдвигать" эту последовательность.
Плюс нужно хранить еще один элемент m - это минимальный из элементов, которые мы уже просмотрели, и который уже "выпал" из последовательности ai.
Мясо начинается когда у нас прочитано 7 элементов, lhs - первый прочитанный элемент он же m, rhs - последний прочитанный элемент и он же a6. Читаем очередной элемент, назовем его cur, новую пару с минимальным произведением ищем среди этого множества:
{ (lhs, rhs), (lhs, cur), (a1, cur), (min, cur) }.
Пусть найденная пара (x, y), тогда делаем следующее:
lhs = x;
rhs = y;
m = min(m, a1);
a1 = a2;
a2 = a3;
a3 = a4;
a5 = a6;
a6 = cur;
Минимальное произведение в конце алгоритма должно быть равно lhs * rhs, если я нигде не облажался.