Pagini recente » Cod sursa (job #1359686) | Cod sursa (job #672420) | Cod sursa (job #2053421) | Cod sursa (job #1485249) | Cod sursa (job #2161848)
#include <fstream>
using namespace std;
ifstream f("scmax.in");
ofstream g("scmax.out");
int v[100003],t[100003],d[100003],sol[10003],n,i,j,st,dr,k,mj;
int main()
{ f >> n ;
for ( i = 1 ; i <= n ;i ++ )
f >> v[i];
k = 1;
d[1] = 1 ;
for( i = 2 ; i <= n ; i ++ )
{st=1;
dr=k;
while( st <= dr )
{
mj = (st+dr)/2 ;
if ( v[d[mj]] < v[i] )
st = mj+1;
else
dr = mj-1;
}
if ( st > k )
k ++ ;
d[st] = i ;
t[i] = d[st-1] ;
}
g << k << '\n' ;
int i = d[k] ;
while ( i != 0 )
{
sol [++j] = i ;
i=t[i];
}
for ( i = k ; i >= 1 ; i -- )
g << v[sol[i]] << " " ;
/*read();
sclm();
print();*/
return 0;
}