Pagini recente » Cod sursa (job #1866259) | Cod sursa (job #3209834) | Cod sursa (job #1142843) | Cod sursa (job #1469247) | Cod sursa (job #488922)
Cod sursa(job #488922)
#include<stdio.h>
#define dim 100100
FILE*f=fopen("scmax.in","r");
FILE*g=fopen("scmax.out","w");
int N,v[dim],nr[dim],max,pozmax,i,j,c[dim],u,sol[dim],k;
inline void afisare () {
fprintf(g,"%d\n",max);
for ( i = k ; i >= 1 ; --i )
fprintf(g,"%d ",sol[i]);
}
int main () {
fscanf(f,"%d",&N);
for ( i = 1 ; i <= N ; ++i )
fscanf(f,"%d",&v[i]);
for ( i = 1 ; i <= N ; ++i ) {
max = 0; pozmax = 0;
for ( j = i - 1 ; j >= 0 ; --j ) {
if ( nr[j] > max && v[i] > v[j] )
max = nr[j],pozmax = j;
}
nr[i] = nr[ pozmax ] + 1 ;
c[ i ] = pozmax ;
}
max = 0;
for ( i = 1 ; i <= N ; ++i )
if( nr[ i ] > max)
max = nr[i], u = i;
while( u != 0 ){
sol[ ++k ] = v[ u ] ;
u = c[u];
}
afisare();
fclose(f);
fclose(g);
return 0;
}