Pagini recente » Cod sursa (job #2494070) | Cod sursa (job #948502) | Cod sursa (job #315286) | Cod sursa (job #2700776) | Cod sursa (job #357462)
Cod sursa(job #357462)
#include <stdio.h>
int v[100001],lung[100001],prev[100001];
int n,aux;
void comp()
{
for (int i=1;i<=n;++i)
{
int max=0,prec=0;
for (int j=1;j<i;++j)
{
if (v[j]<v[i]&&lung[j]>max)
{
max=lung[j];
prec=j;
}
}
lung[i]=max+1;
prev[i]=prec;
}
}
int maxim()
{
int max=0;
for (int i=1;i<=n;++i)
if (lung[i]>max)
{
max=lung[i];
aux=i;
}
return max;
}
void scrie (int x)
{
if (x==0)
return;
scrie (prev[x]);
printf("%d ",v[x]);
}
int main()
{
freopen ("scmax.in","r",stdin);
freopen ("scmax.out","w",stdout);
scanf("%d",&n);
for (int i=1;i<=n;++i)
scanf("%d",&v[i]);
comp();
printf("%d\n",maxim());
scrie(aux);
return 0;
}