НЕ ПОНИМАЮ ГДЕ ОШИБКА С++!

МОЙ КОД:

#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 шт):

Автор решения: Harry

Да как минимум вы не считали значение 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 проверяющей системы, так больше шансов получить ответ) проходит.

→ Ссылка