Pagini recente » Cod sursa (job #2599888) | Cod sursa (job #2563682) | Cod sursa (job #1690606) | Cod sursa (job #1324457) | Cod sursa (job #2972512)
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
ifstream in("scmax.in");
ofstream out("scmax.out");
const int NMAX = 100001;
int v[NMAX], best[NMAX];
int cautbin( int st, int dr, int e){
int ans = 0;
while(st <= dr){
int mid = (st + dr)/2;
if( v[best[mid]] < e ){
st = mid + 1;
ans = mid;
}
else
dr = mid-1;
}
return ans;
}
int main()
{
int n, max_best = 0;
in >> n;
for( int i = 1 ; i <= n ; i++ ){
in >> v[i];
int poz = cautbin(1, max_best, v[i])+1;
best[poz] = i;
max_best = max( poz, max_best );
}
out << max_best << endl;
sort(best+1, best + max_best + 1);
for( int i = 1 ; i <= max_best ; i++ )
out << v[best[i]] << " ";
return 0;
}