- Информатика
- С решить задачу с массивами
С решить задачу с массивами В первой строке входных данных вводится натуральное число N, не превосходящее 100.
В следующей строке вводятся N целых чисел через пробел - элементы массива. Каждое число по модулю не превосходит 109.
Формат выходных данных
Выводите "Min", если в массиве первым встретится минимум и "Max", если максимум.
Примечания
В задачу нужно отправить только описанный фрагмент кода.
5
4 3 6 1 2
Max
83
-854 631 -866 -558 -597 -940 -671 410 194 -771 -897 -733 -805 395 669 613 -637 -646 -877 -632 530 -255 642 -34 63 372 -406 -747 -471 -912 527 547 -297 -729 -310 -118 5 560 -487 -555 156 -476 221 -797 -64 -844 -289 -566 13 -663 824 773 -155 17 -803 457 -222 861 -643 -106 -714 695 -125 916 81 -561 -605 954 549 -811 -768 -748 -607 95 373 639 -307 685 -889 -441 110 -822 -696
Min

Здесь ничего не написано про случай, если максимум = минимуму, поэтому его не учитываем.
Идея программы: просто ищем индекс первого максимального и первого минимального, а затем сравниваем их
Фрагмент кода:
int max = a[0], min = a[0];
int i_max = 0, i_min = 0;
for (int i = 1; i < n; i++) {
if (a[i] > max) {
max = a[i];
i_max = i;
}
if (a[i] < min) {
min = a[i];
i_min = min;
}
}
if (i_max > i_min)
cout << "MAX";
else if (i_min > i_max)
cout << "MIN";
#include <iostream>
using namespace std;
int main(){
int a[100], n;
cin >> n;
for(int i = 0; i < n; i++)
cin >> a[i];
pair<int,int> min_elem, max_elem;
min_elem = max_elem = {a[0], 0};
for(int i = 1; i < n; i++){
if(a[i] < min_elem.first)
min_elem = {a[i],i};
if(a[i] > max_elem.first)
max_elem = {a[i],i};
}
min_elem.second < max_elem.second ? cout << "Min" : cout << "Max";
}