Fix your base case in printReverse so that it prints the entire array, not "the entire array except for the first element". Oh, and change void main to int main while you're there.
Also how did this even compile? Removing conio.h, changing iostream.h to iostream and adding using namespace std, changing void main to int main, I still get this:
Code:
$ g++ -Wall -Wextra -o temp temp.cpp
temp.cpp: In function ‘void longestMonotoneSubsequence(int, int*)’:
temp.cpp:36: warning: right-hand operand of comma has no effect
temp.cpp: In function ‘int main()’:
temp.cpp:48: error: cannot convert ‘int (*)[100]’ to ‘int*’ for argument ‘2’
to ‘void longestMonotoneSubsequence(int, int*)’
The first warning is for delete back, rank -- that's only a memory leak; the second is the &a in the function call, which as the compiler correctly notes, is not an array, but a pointer to an array.
Once I fix those, and fix the base case of print as mentioned above, I get the correct result (at least for your test case).