Cod sursa(job #415916)
Utilizator | Munteanu Petre Clasian | Data | 11 martie 2010 22:35:54 |
---|---|---|---|
Problema | Subsir crescator maximal | Scor | 70 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.48 kb |
#include<stdio.h>
int n,max,pmax,mx,v[100000],d[100000],pd[100000],i,j;
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]);
pd[n]=1;
for(i=n-1;i;i--) { mx=0;
for(j=i+1;j<=n;j++)if(v[i]<v[j]&&pd[j]>mx)mx=pd[j],d[i]=j;
pd[i]=1+mx;
if(max<pd[i])max=pd[i],pmax=i;
}
printf("%d\n",max);
while(pmax) { printf("%d ",v[pmax]);
pmax=d[pmax];
}
return 0;
}