Pagini recente » Cod sursa (job #2822721) | Cod sursa (job #3209460) | Cod sursa (job #537547) | Cod sursa (job #273158) | Cod sursa (job #757534)
Cod sursa(job #757534)
#include <cstdio>
#define NMAX 100001
using namespace std ;
short int nr[NMAX], pre[NMAX] ;
int n ;
long v[NMAX] ;
int main () {
int i, j ;
freopen ( "scmax.in", "r", stdin ) ;
scanf ( "%d\n", &n ) ;
for ( i=1; i<=n; ++i )
scanf ( "%ld ", &v[i] ) ;
fclose ( stdin ) ;
v[1] = 1 ;
for ( i=2; i<=n; ++i )
for ( j=1; j<=i; ++j )
if ( v[i] > v[j] )
if ( nr[j] + 1 > nr[i] ) {
nr[i] = nr[j] + 1 ;
pre[i] = j ;
// printf ( "\n" ) ;
// for ( i=1; i<=n; ++i ) printf ( "%hd ", pre[i] ) ;
}
int Max = 1, jm = 0 ;
for ( i=1; i<=n; ++i )
if ( nr[i] > Max ) {
Max = nr[i] ;
jm = pre[i] ;
}
for ( i=1; i<=n; ++i ) printf ( "%hd ", nr[i] ) ;
printf ( "\n" ) ;
for ( i=1; i<=n; ++i ) printf ( "%hd ", pre[i] ) ;
freopen ( "scmax.out", "w", stdout ) ;
printf ( "%d\n", Max ) ;
short int l = 0 , poz[NMAX] ;
do {
poz[++l] = pre[jm] ;
jm = pre[jm] ;
} while ( pre[jm] != 0 ) ;
for ( i=l; i>=1; --i )
printf ( "%ld ", v[poz[i]] ) ;
fclose ( stdout ) ;
return 0 ;
}