Pagini recente » Cod sursa (job #1141498) | Cod sursa (job #2652918) | Cod sursa (job #1994665) | Cod sursa (job #1223387) | Cod sursa (job #929557)
Cod sursa(job #929557)
#include <cstdio>
#include <iostream>
using namespace::std;
#define NMAX 100001
#define inFile "scmax.in"
#define outFile "scmax.out"
void Citire(), Afisare();
int a[NMAX], n, m, x;
int main() {
Citire();
Afisare();
return 0;
}
void Citire() {
freopen( inFile, "r", stdin );
scanf( "%d", &n );
for( int i = 1; i <= n; i++ ) {
scanf( "%d", &a[i] );
}
}
void Afisare() {
int i, j,
*val = new int[n],
*poz = new int[n];
val[n] = 1;
poz[n] = -1;
for( i = n-1; i > 0; i-- ) {
val[i] = 1;
poz[i] = -1;
for( j = i+1; j <= n; j++ ) {
if( a[i] < a[j] && val[i] <= val[j] ) {
val[i] += val[j];
poz[i] = j;
}
}
}
for( i = 1; i <= n; i++ ) {
if( m < val[i] ) {
m = val[i];
x = i;
}
}
freopen( outFile, "w", stdout );
printf( "%d\n", m );
for( i = x; i != -1; i = poz[i] ) {
printf( "%d ", a[i] );
}
printf("\n");
}