Cod sursa(job #841652)
Utilizator | Dragan Andrei Gabriel dragangabriel | Data | 24 decembrie 2012 16:00:09 |
---|---|---|---|
Problema | Subsir crescator maximal | Scor | 70 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.46 kb |
#include<cstdio>
int n,i,j,k,sir[100005],max,rez,v[100005],poz[100005];
void back(int k)
{
if (poz[k]) back(poz[k]);
printf("%d ",v[k]);
}
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]);sir[i]=1;
for (j=1;j<=i;j++) if (v[i]>v[j] && sir[i]<=sir[j]) poz[i]=j,sir[i]=sir[j]+1;
if (sir[i]>max) max=sir[i],k=i;
}
printf("%d\n",max);
back(k);
return 0;
}