#include<iostream>
#include<stdlib.h>
using namespace std;
#define random(x) (rand()%x)
void lis(int a[],int n)
{
int* f=new int[n];
for(int i=0;i<n;i++)
{
f[i]=1;
}
for(int i2=1;i2<n;i2++)
{
for(int j=0;j<i2;j++)
{
if(a[i2]>a[j]&&f[j]>f[i2]-1)
f[i2]=f[j]+1;
}
}
int max=1;
int index=0;
for(int i3=1;i<n;i3++)
{
if (f[i3]>max)
{
max=f[i3];
index=i3;
}
}
int* m=new int[max];
m[max]=a[index];
for(int i4=max-1;i4<=0;i4--)
{
for(int j=index-1;j<=0;j--)
{
if(a[j]<a[index])
{
index=j;
m[i4]=a[j];
}
}
}
cout<<max<<endl<<endl;
for(int i5=0;i5<max;i5++)
cout<<m[i5]<<endl;
delete []f;
delete []m;
}
int main()
{
int a[10];
for(int i=0;i<10;i++)
{
a[i]=random(100);
}
lis(a,10);
return 0;
}
#include<stdlib.h>
using namespace std;
#define random(x) (rand()%x)
void lis(int a[],int n)
{
int* f=new int[n];
for(int i=0;i<n;i++)
{
f[i]=1;
}
for(int i2=1;i2<n;i2++)
{
for(int j=0;j<i2;j++)
{
if(a[i2]>a[j]&&f[j]>f[i2]-1)
f[i2]=f[j]+1;
}
}
int max=1;
int index=0;
for(int i3=1;i<n;i3++)
{
if (f[i3]>max)
{
max=f[i3];
index=i3;
}
}
int* m=new int[max];
m[max]=a[index];
for(int i4=max-1;i4<=0;i4--)
{
for(int j=index-1;j<=0;j--)
{
if(a[j]<a[index])
{
index=j;
m[i4]=a[j];
}
}
}
cout<<max<<endl<<endl;
for(int i5=0;i5<max;i5++)
cout<<m[i5]<<endl;
delete []f;
delete []m;
}
int main()
{
int a[10];
for(int i=0;i<10;i++)
{
a[i]=random(100);
}
lis(a,10);
return 0;
}