sundeepblue
4/22/2014 - 4:06 PM

Given an array, print the largest subarray that has elements in an increasing order

Given an array, print the largest subarray that has elements in an increasing order

#include <iostream>
#include <vector>
using namespace std;

int get_longest_increasing_subarray (int A[], int N, int& left, int& right) {
    if(N == 1) return 1;
    int max_len = 1, i, start = 0;
    for(i=1; i<N; i++) {
        if(A[i-1] >= A[i]) {
            if(max_len < i - start) {   // POS1
                max_len = i - start;
                left = start;
                right = i-1;
            }
            start = i; // should be outside of POS1 ?
        }
    }
    if(i == N) {
        max_len = max(max_len, i-start);
        left = start;
        right = N-1;
    }
    return max_len;
}

int main() {
    int A[] = {1,5,2,4,6,0,1,2,3,4};
    int left = 0, right = 0;
    cout << get_longest_increasing_subarray(A, 10, left, right) << endl;
    cout << "[" << left << ", " << right << "]";
}