Pagini recente » Cod sursa (job #1905220) | Cod sursa (job #1687937) | Cod sursa (job #1059400) | Cod sursa (job #2040637) | Cod sursa (job #1550309)
#include <fstream>
using namespace std;
ifstream fin("scmax.in");
ofstream fout("scmax.out");
int n,i,ls,ld,mij,s[100010],v[100010],p[100010],sol[100010],j,ans;
int main()
{
fin>>n;
fin>>v[ 1 ];
ans = 1;
p[ 1 ] = v[ 1 ];
s[ 1 ] = 1;
for( i = 2 ; i <= 100000 ; i++ )
p[ i ] = 2000000001;
for( i = 2 ; i <= n ; i++ )
{
fin>>v[ i ];
for( j = 0 ; j <= ans ; j++ )
if( p[ j ] < v[ i ] && v[ i ] < p[ j + 1 ] )
break;
p[ j + 1 ] = v[ i ];
ans = max( ans , j + 1 );
s[ i ] = j + 1;
}
fout<<ans-1<<'\n';
p[ 0 ] = ans;
for( i = n ; i >= 1 ; i-- )
{
if( s[ i ] == p[ 0 ] - 1 )
{
sol[ p[ 0 ]-- ] = v[ i ];
}
}
for( i = 2 ; i <= ans ; i++ )
fout<<sol[ i ]<<' ';
return 0;
}