В
Все
М
Математика
О
ОБЖ
У
Українська мова
Х
Химия
Д
Другие предметы
Н
Немецкий язык
Б
Беларуская мова
М
Музыка
Э
Экономика
Ф
Физика
Б
Биология
О
Окружающий мир
У
Українська література
Р
Русский язык
Ф
Французский язык
П
Психология
О
Обществознание
А
Алгебра
М
МХК
Г
География
И
Информатика
П
Право
А
Английский язык
Г
Геометрия
Қ
Қазақ тiлi
Л
Литература
И
История
katyunyakim123
katyunyakim123
15.11.2020 12:56 •  Информатика

В массиве, заполненном произвольными целыми числами, найдите два числа, произведение которых максимально. Вложенные циклы не используйте. Входные данные

На вход программе сначала подается значение n≤50000 — количество элементов в массиве. В следующей строке входных данных расположены сами элементы массива — целые числа, по модулю не превосходящие 30000.

Выходные данные

Выдайте два искомых числа в порядке неубывания.
C++

Показать ответ
Ответ:
kharchenko219633
kharchenko219633
07.04.2021 01:07

#include <iostream>

#include <vector>

using namespace std;

int main()

{

   int n;

   cin >> n;

   vector <int> v(n);

   for(int i = 0; i < n; i++) {

       cin >> v[i];

   }

   int a, b, c, d; //1, 2 макс.; 1, 2 мин.

   a = c = v[0];

   b = d = v[1];

   if(a > b) swap(a, b);

   if(c > d) swap(c, d);

   for(int i = 2; i < n; i++) {

       if(v[i] > a) {

           if(a > b) b = a;

           a = v[i];

       } else if(v[i] > b) {

           b = v[i];

       }

       if(v[i] < c) {

           d = c;

           c = v[i];

       } else if(v[i] < d) {

           d = v[i];

       }

   }

   if(a > b) swap(a, b);

   if(c > d) swap(c, d);

   if(a * b > c * d) cout << a << " " << b;

   else cout << c << " " << d;

}

Объяснение:

Как то так

0,0(0 оценок)
Популярные вопросы: Информатика
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота