Прежде всего вам нужно изменить тип данных вектора с int
на long long
везде, где вы написали vector<int>number
на vector<long long>number
.
Еще одно изменение, которое необходимо сделать, чтобы получить правильный вывод, - подумать о случае, когда есть как минимум два больших отрицательных числа.
Например: если вектор содержит: {-10, -5, -2, 0, 1, 2}
.
Ваша программа выведет: 1 * 2 = 2
в качестве ответа.
Но ответ для этого случая будет: -10 * -5 = 50
.
Итак, исправленный метод расчета будет:
long long MaxPairwiseProductFast(const vector<long long> &number)
{
long long result = 0;
long n = number.size();
if (n < 2) return 0;
result = number.at(n-1) * number.at(n-2);
result = max(result, number.at(0) * number.at(1));
return result;
}