Pagini recente » Cod sursa (job #1668648) | Cod sursa (job #146409) | Cod sursa (job #161171) | Cod sursa (job #1822612) | Cod sursa (job #462733)
Cod sursa(job #462733)
#include <stdio.h>
long int lungime[100000],a[100000],indice[100000],n;
void date(){
long int i;
freopen ("scmax.in","r",stdin);
scanf("%ld\n",&n);
for(i=1;i<=n;i++)
scanf("%ld ",&a[i]);
}
int main(){
long int i,j,max,pozmax;
freopen("scmax.out","w",stdout);
date();
lungime[n]=1;
indice[n]=-1;
for(i=n-1;i>0;i--){
lungime[i]=1;
indice[i]=-1;
for(j=i+1;j<=n;j++){
if((lungime[i]<(lungime[j]+1))&&(a[i]<a[j])){lungime[i]=1+lungime[j];indice[i]=j;}
}
}
//determinare maxim
max=lungime[1];pozmax=1;
for(i=2;i<=n;i++)if(lungime[i]>max){max=lungime[i];pozmax=i;}
//afisare solutie optima;
printf("%ld\n",max);
for(i=pozmax;i!=-1;i=indice[i]){
printf("%ld ",a[i]);
}
printf("\n");
return 0;
}