Здравствуйте! Решаю на C++ задачу:
В массиве, заполненном произвольными целыми числами, найдите два числа, произведение которых максимально. Вложенные циклы не используйте.
Входные данные
На вход программе сначала подается значение n≤50000 — количество элементов в массиве. В следующей строке входных данных расположены сами элементы массива — целые числа, по модулю не превосходящие 30000.
Выходные данные
Выдайте два искомых числа в порядке неубывания.
По-моему, всё решено верно, но результат: "Программа выдаёт неверный ответ"
В чем ошибка?
#include <iostream>
#include <vector>
using namespace std;
int main()
{
int a = 0, num1max = 0, num2max = 0, num1min = 0, num2min = 0;
cin >> a;
vector <int> v(a);
for(int i = 0; i < a; i++) {
cin >> v[i];
}
for(int i = 0; i < a; i++) {
if(v[i] > num1max) {
num2max = num1max;
num1max = v[i];
} else if(v[i] > num2max) {
num2max = v[i];
}
if(v[i] < num1min) {
num2min = num1min;
num1min = v[i];
} else if (v[i] < num2min) {
num2min = v[i];
}
}
if(num1max * num2max > num1min * num2min) {
if(num1max > num2max) swap(num1max, num2max);
cout << num1max << " " << num2max;
} else {
if(num1min > num2min) swap(num1min, num2min);
cout << num1min << " " << num2min;
}
}