i got the code for this problem but not able to find where i am wrong

my problem is as follows

Given an array of numbers, find the longest subsequence whose elements grow monotonically:

1 4 8 2 5 7 3 6 => 1 4 5 7

1 4 8 2 5 7 3 6 7 => 1 4 5 6 7

1 4 8 2 3 7 4 6 => 1 2 3 4 6

that is we must form subsets and find which is longest among them

as showed in the above example

Code:`#include<iostream.h>`

#include<conio.h>

int maxRank (int curr, int* arr, int* rank) {

int max = 0 ;

for (int i = 0; i <= curr; i++) {

if (arr[i]<arr[curr] && rank[i]>rank[max]) {

max = i ;

}

}

return max ;

}

void printReverse (int curr, int* arr, int* back) {

if (curr == 0) return ;

printReverse (back[curr], arr, back) ;

cout << arr[curr] << " " ;

}

void longestMonotoneSubsequence (int count, int* arr) {

int* back = new int[count] ;

int* rank = new int[count] ;

int max = 0 ;

rank[0] = 0, back[0] = 0 ;

for (int i = 0; i <= count; i++) {

back[i] = maxRank (i, arr, rank) ;

rank[i] = rank[back[i]]+1 ;

if (rank[i] > rank[max]) {

max = i ;

}

}

printReverse (max, arr, back) ;

cout << "\n" ;

delete rank, back ;

}

void main()

{

int n;

int a[100];

cin>>n;

for(int i=0;i<n;i++)

{

cin>>a[i];

}

longestMonotoneSubsequence(n,&a);

}