В массиве найти самую длинную монотонную последовательность

Android2600

Последовательность a1,а2,...,аk называется монотонной, если а1<=a2<=...<=ak либо a1>=a2>=...>=ak. В массиве A(m) найти самую длинную монотонную последовательность
1 ответ

Android2600

#include <iostream>
 
int array_maxseq(const int a[], int n, int& e){
    int j, p = n, m = 0, i = 0;
    while(i < n){
        j = i + 1;
        while((j < n) && (a[j - 1] <= a[j]))
            ++j;
        if((j - i) > m){
            m = j - i;
            p = i;
            e = j;
        }
 
        j = i + 1;
        while((j < n) && (a[j - 1] >= a[j]))
            ++j;
        if((j - i) > m){
            m = j - i;
            p = i;
            e = j;
        }
        ++i;
    }
    return p;
}
 
int main(void){
    int a[] = { 1, 9, 2, 3, 4, 5, 1, 8, 7, 7, 0, 0 };
    int n   = sizeof(a)/sizeof(a[0]);
 
    int l;
    int f = array_maxseq(a, n, l);
    while(f < l)
        std::cout << a[f++] << ' ';
    return 0;
}