Pagini recente » Cod sursa (job #1855730) | Cod sursa (job #149539) | Cod sursa (job #1522913) | Cod sursa (job #2315158) | Cod sursa (job #268478)
Cod sursa(job #268478)
#include <stdio.h>
long n,i,v[100001],p[100001],l[100001],j,max,first,min,a;
int main()
{
freopen("subsir2.in","r",stdin);
freopen("subsir2.out","w",stdout);
min=2000000;
scanf("%ld",&n);
for(i=1;i<=n;i++)
{ scanf("%ld",&v[i]);
if(v[i]<min){ min=v[i];
a=i;
}
}
first=n;
p[n]=-1;
l[n]=1;
for(i=n-1;i>=a;i--)
{
l[i]=1;
p[i]=-1;
for(j=i+1;j<=n;j++)
{
if((v[i]<=v[j]) && (l[i]<=l[j]+1)){
p[i]=j;
l[i]=l[j]+1;
}
}
if(l[i]>max){ max=l[i];
first=i;
}
}
printf("%ld\n",max);
i=first;
while(p[i]!=-1)
{
printf("%ld ",v[i]);
i=p[i];
}
printf("%ld",v[i]);
return 0;
}