Pagini recente » Cod sursa (job #1757295) | Cod sursa (job #569619) | Cod sursa (job #1629174) | Cod sursa (job #146215) | Cod sursa (job #491215)
Cod sursa(job #491215)
#include <stdio.h>
int a[100100],grozav[100100],urmator[100100],max,pi,m,n,i,j,lmax,k;
int main()
{
freopen("scmax.in","r",stdin);
freopen("scmax.out","w",stdout);
scanf("%d",&n);
for(i=1; i<=n; ++i)
scanf("%d",&a[i]);
grozav[n]=1;
for(i=n-1; i>=1; --i)
{
max=0;
for(j=i+1; j<=n; ++j)
if((a[j]>a[i])&&(max<grozav[j]))
{
max=grozav[j];
urmator[i]=j;
}
grozav[i]=max+1;
if (lmax<grozav[i])
{
lmax=grozav[i];
pi=i;
}
}
//printf("%d\n",pi);
printf("%d\n",lmax);
/*for(i=1; i<=n; ++i)
printf("%d ",grozav[i]);
printf("\n");
for(i=1; i<=n; ++i)
printf("%d ",urmator[i]);
printf("\n");
m=a[pi];
printf("%d ",m);
for(i=pi+1, k=1; i<=n && k<=lmax; ++i)
{
if(a[i]>m)
{
m=a[i];
k++;
printf("%d ",m);
}
}*/
printf("%d ",a[pi]);
for(i=pi; urmator[i]!=0; urmator[i]=urmator[urmator[i]])
printf("%d ",a[urmator[i]]);
return 0;
}