Pagini recente » Cod sursa (job #636695) | Cod sursa (job #2729126) | Cod sursa (job #74391) | Cod sursa (job #2178920) | Cod sursa (job #1043579)
#include<fstream>
#include<iostream>
using namespace std;
fstream in ( "scmax.in" , ios::in ),
out( "scmax.out", ios::out);
int nr[100001], l[100001], back[100001], imax, n, lmax, maxim;
void complete(){
int i, j, x=0;
for( i=2; i<=n; i++ ){
maxim =-1;
for( j=1; j<i; j++){
if( l[j]>maxim && nr[j]<nr[i] ){
maxim=l[j];
x=j;
}
}
if(maxim == -1){
maxim = 0;
}
l[i] = maxim+1;
back[i] = x;
}
}
void afis(int i){
if( back[i] ){
afis( back[i] );
}
out << nr[i] <<' ';
}
int main(){
in >> n;
for(int i=1; i<=n; i++){
in >> nr[i];
}
l[1] = 1;
complete();
maxim = -1;
for(int i=1; i<=n; i++){
if( maxim < l[i] ){
maxim = l[i];
imax = i;
}
}
out << maxim << '\n';
afis( imax );
out <<'\n';
return 0;
}