НЕ ПОНИМАЮ ГДЕ ОШИБКА С++!
МОЙ КОД:
#include <iostream>
#include <vector>
using namespace std;
int main()
{
int n,mx1=-1000000000,mx2=-1000000000,mn1=1000000000,mn2=1000000000;
vector <int> t(n);
for (int i=0;i<n;i++){
cin>>t[i];
}
for (int c=0;c<n;c++){
if (t[c]>0&&t[c]>mx1){
mx2=mx1;
mx1=t[c];
}else if (t[c]<0&&t[c]<mn1){
mn2=mn1;
mn1=t[c];
}
}
if ((mx1*mx2)>(mn1*mn2)){
cout<<mx2<<" "<<mx1;
}else{
cout<<mn1<<" "<<mn2;
}
return 0;
}
Максимальное произведение В массиве, заполненном произвольными целыми числами, найдите два числа, произведение которых максимально. Вложенные циклы не используйте.
Входные данные
На вход программе сначала подаётся значение n⩽50000 — количество элементов в массиве. В следующей строке входных данных расположены сами элементы массива — целые числа, по модулю не превосходящие 30000.
Выходные данные
Выдайте два искомых числа в порядке возрастания.
Ответы (1 шт):
Да как минимум вы не считали значение n...
Но вы как-то уж очень длинно решаете. Вот такой вариант не хотите рассмотреть?
#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;
int main()
{
int n;
cin >> n;
vector<int> v(n);
for(int i = 0; i < n; ++i) cin >> v[i];
sort(v.begin(),v.end());
if (v[0]*v[1] > v[v.size()-1]*v[v.size()-2])
cout << v[0] << " " << v[1];
else
cout << v[v.size()-2] << " " << v[v.size()-1];
}
По крайней мере проверку (кстати, всегда указывайте URL проверяющей системы, так больше шансов получить ответ) проходит.