Pagini recente » Cod sursa (job #456019) | Cod sursa (job #580035) | Cod sursa (job #1689754) | Cod sursa (job #1447137) | Cod sursa (job #1649944)
#include <fstream>
#include <algorithm>
using namespace std;
ifstream fin("scmax.in");
ofstream fout("scmax.out");
int i,j,n,m,k,sol[100010],mar[100010],p[100010],v[100010],oo=2000000010,x;
int main()
{
fin>>n;
for( i = 1 ; i <= n ; i++ )
fin>>v[ i ],p[ i ] = oo;
for( i = 1 ; i <= n ; i++ )
{
x = lower_bound( p , p + i , v[ i ] ) - p;
sol[ 0 ] = max( sol[ 0 ] , x );
mar[ i ] = x;
p[ x ] = min( p[ x ] , v[ i ] );
}
k = sol[ 0 ];
for( i = n ; i >= 1 ; i-- )
{
if( mar[ i ] == k )
sol[ k ] = v[ i ],k--;
}
fout<<sol[ 0 ]<<'\n';
for( i = 1 ; i <= sol[ 0 ] ; i++ )
fout<<sol[ i ]<<' ';
return 0;
}