Pagini recente » Istoria paginii utilizator/alle43221 | Cod sursa (job #799517) | Cod sursa (job #539770) | Cod sursa (job #1204949) | Cod sursa (job #427261)
Cod sursa(job #427261)
#include <stdio.h>
int vec[100005],tata[100005],l[100005];
int i,j,n;
int main() {
freopen("scmax.in","r",stdin);
freopen("scmax.out","w",stdout);
scanf("%d",&n);
for(i = 1 ; i <= n ; i++ )
scanf("%d",&vec[i]);
l[n] = 1;
tata[n] = 0;
for(i = n-1 ; i >= 1 ; i--)
for(j = i + 1 ; j <= n ; j++)
if( (vec[i] <= vec[j]) && (l[i] < l[j] + 1) )
l[i] = l[j] + 1 , tata[i] = j;
int sol = 1;
for(i = 2; i<= n; i++)
if(l[sol] < l[i])
sol = i;
printf("%d\n",l[sol]);
do {
printf("%d ",vec[sol]);
sol = tata[sol];
}while( sol == 0 );
return 0;
}