c++ - Longest sub-sequence the elements of which make up a set of increasing integers -
find length of longest continuous sub-sequence of array elements of make set of continuous increasing integers. input file consists of number n(the number of elements in array) followed n integers.
 example input - 10 1 6 4 5 2 3 8 10 7 7
 example output - 6(1 6 4 5 2 3 since make set 1 2 3 4 5 6).
 able write algorithm satisfies 0<n<5000 in order 100 points algorithm had work 0<=n<=50000.
how this? arrange array elements in descending order, each coupled index-range local maximum (for example, a[0] = 10 maximum array indexes, [0, 10], while a[3] = 4 local maximum array indexes, [3,3]. traverse list , find longest, continuously descending sequence index-ranges contained in starting range.
10 1 6 4 5 2 3 8 10 7 7 => 10, [ 0,10]     8, [ 1, 7]     7, [ 9,10]     6, [ 1, 6] <--     5, [ 3, 6]    | ranges     4, [ 3, 3]    |     3, [ 5, 6]    | contained     2, [ 5, 5]    | in [1,6]     1, [ 1, 1] <-- 
Comments
Post a Comment