Ис пользая контейнер list и deque написать программу

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

#include <iostream>
#include <list>
#include <iterator>
using namespace std;
int main()
setlocale(LC_ALL, "rus");

list<double> lst;

double digit;
int n;
cout << "Введите число n" << endl;
cin >> n;
cout << "Введите последовательность" << endl;
for (int i = 0; i < n; i++) {
    cin >> digit;
    lst.push_back(digit);
}

cout << "\nВаша последовательность" << endl;
for (auto iter = lst.begin(); iter != lst.end(); iter++)
{
    cout << *iter << " ";
}

cout << "\n\n\n" << endl;
list <double>::iterator p = lst.begin();

list <double> s1;
list <double> s2;
int s = 0;
if (*p > 0)
{
    s2.push_back(*p);
    s++;
    p++;
}
else    p++;

for (int i = 1; i < lst.size(); i++)
{
    if(*p==*prev(p))p++;
    else if (*p > 0 && *p > *prev(p))
    {
        s2.push_back(*p);
        s++;
        p++;
    }
    else
    {
        if (s1.size() < s2.size())
        {
            s1.clear();
            for (list <double>::iterator j = s2.begin(); j != s2.end(); j++)
            {
                s1.push_back(*j);
            }
        }
        s2.clear();
        s2.push_back(*p);
        s = 0;
        s++;
        p++;
    }
}

if (s1.size() < s2.size())
{
    s1.clear();
    for (list <double>::iterator j = s2.begin(); j != s2.end(); j++)
    {
        s1.push_back(*j);
    }
}

for (list <double>::iterator j = s1.begin(); j != s1.end(); j++)
{
    cout << *j << " ";
}

return 0;

}


Ответы (0 шт):