Pagini recente » Cod sursa (job #1743841) | Cod sursa (job #1503920) | Cod sursa (job #1586781) | Cod sursa (job #867684) | Cod sursa (job #462735)
Cod sursa(job #462735)
#include <stdio.h>
long int lungime[100001],a[100001],indice[100001],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;
max=1;
pozmax=n;
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])&&(a[i]<a[j])){
lungime[i]=1+lungime[j];
indice[i]=j;
if(lungime[i]>max){
max=lungime[i];
pozmax=i;
}
}
}
}
//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;
}