Cod sursa(job #410034)
Utilizator | Cirstean Paul paul992 | Data | 4 martie 2010 00:38:48 |
---|---|---|---|
Problema | Subsir crescator maximal | Scor | 10 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.51 kb |
#include<stdio.h>
#define lmax 100005
int v[lmax],l[lmax],max,i,k,n,t;
int main()
{freopen("scmax.in","r",stdin);
freopen("scmax.out","w",stdout);
scanf("%d ",&n);
for(i=1;i<=n;i++)
scanf("%d ",&v[i]);
l[n]=1;
for(i=n-1;i>=1;i--)
{
for(k=i+1;k<=n;k++)
if(v[k]>v[i]&&l[k]>max){max=l[k];
l[i]=max+1;}}
for(i=1;i<=n;i++)
if(l[i]>max){max=l[i];
t=i;}
printf("%d\n",max);
printf("%d ",v[t]);
for(i=t;i<=n;i++)
if(v[i]>v[t]&&l[i]==max-1)
{printf("%d ",v[i]);
max--;}
return 0;}