Pagini recente » Cod sursa (job #866468) | Cod sursa (job #2096469) | Cod sursa (job #1746642) | Cod sursa (job #2363882) | Cod sursa (job #209728)
Cod sursa(job #209728)
# include <stdio.h>
int n,max;
int a[100005],b[100005],lung[100005],prec[100005];
void read ()
{
int i;
scanf ("%d",&n);
for (i=1; i<=n; ++i)
scanf ("%d",&a[i]);
}
void solve ()
{
int i,j,best,ind;
for (i=1; i<=n; ++i)
{
best=0;
ind=0;
for (j=1; j<i; ++j)
if (a[i]>a[j] && lung[j]>best)
{
best=lung[j];
ind=j;
}
lung[i]=best+1;
prec[i]=ind;
}
for (i=1; i<=n; ++i)
if (lung[i]>max)
{
max=lung[i];
ind=i;
}
printf ("%d\n",max);
best=max;
b[max--]=a[ind];
while(prec[ind])
{
b[max--]=a[prec[ind]];
ind=prec[ind];
}
for (i=1; i<=best; ++i)
printf ("%d ",b[i]);
}
int main ()
{
freopen ("scmax.in","r",stdin);
freopen ("scmax.out","w",stdout);
read ();
solve ();
return 0;
}