Нахождение максимальной подпоследовательности

Задача такая: Создать файл из m вещественных чисел. Найти длину k самой длинной «пилообразной (зубьями вверх)» последовательности идущих подряд чисел: X[p+1] < X[p + 2] < X[p+3] <…< X[p + k]

(То есть по сути найти максимальную возрастающую подпоследовательность, если я все правильно понимаю)

Не понимаю, какое условие я не учел, поскольку ломается при некоторых тестах, например при: m=10 сгенерировано 10 чисел и получилась последовательность: 27686, 9202, 28537, 2195, 3297, 2320, 20844, 30995, 6556, 25712, Программа выдает ответ 2, хотя очевидно, что здесь должен быть ответ 3. (2320, 20844, 30995 максимальная возрастающая последовательность).

Вот код:

#include <iostream>
#include <fstream>
#include <string>
#include <ctime>
#include <algorithm>
using namespace std;
int main()
{
    srand(time(NULL));
    double x, m;     //m - количество вещественных чисел
    int n, n1 = n, len = 1, maxlen = 1;   //n - 'текущее' число, n1 - 'следующее' число
    cout << "Введите количество вещественных чисел m, чтобы записать их в файл: " << endl;
    cin >> m;
    ofstream f1;
    f1.open("test1.txt");
    for (int i = 0; i < m; i++)     //заполнение файла случайными числами
    {
        x = rand();
        f1 << x << endl;
    }
    f1.close();

    ifstream f;
    f.open("test1.txt");
    while (!f.eof())            
    {
            n1 = n;
            f >> n;
            if (n1  > n)
            {
                len++;
            }
            else
            {
                len = 1;
            }
            maxlen = max(maxlen, len);
        }
    cout << maxlen;
}

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

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

Вы вообще-то ищете убывающую последовательность.

Смените знак на

if (n1 < n)

И еще — учтите, что при входе в цикл у вас n1 и n содержат (пусть и одинаковый) мусор.

→ Ссылка