Pagini recente » Cod sursa (job #3171366) | Cod sursa (job #538979) | Cod sursa (job #312418) | Cod sursa (job #2079051) | Cod sursa (job #2291340)
#include <bits/stdc++.h>
using namespace std;
ifstream fin( "scmax.in" );
ofstream fout( "scmax.out" );
int n, a[100005], r[100005], sol[100005], sm, k = 1;
int main()
{
fin >> n;
for( int i = 1; i <= n; i++ )
{
fin >> a[i];
r[i] = INT_MAX;
}
r[1] = a[1];
sol[1] = a[1];
int v = 1;
//fout << "REZ:" << 1 << ' ' << r[1] << endl;
for( int i = 2; i <= n; i++ )
{
int s = 1, d = v + 1;
while( s < d )
{
int m = ( s + d ) / 2;
if( a[i] > r[m] )
s = m + 1;
else
d = m - 1;
}
if( s == v + 1 )
{
v++;
sol[v] = a[i];
}
else if( s == 1 && k )
{
sol[1] = a[i];
k = 0;
}
sm = max( s, sm );
r[s] = a[i];
/* fout << "REZ:";
for( int i = 1; i <= v; i++ )
fout << i << ' ' << r[i] << '\n';
fout << "Nr: " << a[i] << endl;*/
}
fout << sm << endl;
for( int i = 1; i <= sm; i++ )
fout << sol[i] << ' ';
return 0;
}