Контейнер vector
Петя успевает по математике лучше всех в классе, поэтому учитель задал ему сложное домашнее задание, в котором нужно в заданном наборе целых чисел найти сумму всех положительных элементов, затем найти где в заданной последовательности находятся максимальный и минимальный элемент и вычислить произведение чисел, расположенных в этой последовательности между ними. Так же известно, что минимальный и максимальный элемент встречаются в заданном множестве чисел только один раз и не являются соседними. Поскольку задач такого рода учитель дал Пете около ста, то Петя как сильный программист смог написать программу, которая по заданному набору чисел самостоятельно находит решение. Напишите рабочую программу.
Входные данные
В первой строке записано единственное число N (N≤15) — количество элементов массива. Вторая строка содержит N целых чисел, представляющих заданный массив. Все элементы массива разделены пробелом. Каждое из чисел во входном файле, в том числе и N, не превышает 20 по абсолютной величине.
Выходные данные
В единственную строку нужно вывести два числа, разделенных пробелом: сумму положительных элементов и произведение чисел, расположенных между минимальным и максимальным элементами. Значения суммы и произведения не превышают по модулю 10^6.
#include <vector>
using namespace std;
int main()
{
long long n, s = 0, p = 1; // long long из-за 10^6
cin >> n;
vector<int> v(n);
for (int i = 0; i < n; ++i) {
cin >> v[i];
// создал массив
}
int imn = 0, imx = 0;
for (int i = 0; i < n; ++i) {
if (v[i] < v[imn]) {
imn = i;
}
if (v[i] > v[imx]) {
imx = i;
}
// мин и мах есть
}
for (int i = 0; i < n; i++) if (v[i] > 0) s += v[i];
cout << s << " "; // сумма
for (int i = imn + 1; i < imx; i++) p *= v[i];
cout << p; // произведение
return 0;
}
Мне пишет: "Программа выдает неверный ответ"
Что мне нужно сделать в данном случае?
Ответы (1 шт):
Ваша главная проблема - минимальное число может идти после максимального :)
Добавьте одну строчку:
cout << s << " "; // сумма
if (imn > imx) { int t = imn; imn = imx; imx = t; } // ВОТ ЭТУ
for (int i = imn + 1; i < imx; i++) p *= v[i];