Pagini recente » Cod sursa (job #1296329) | Cod sursa (job #1392356) | Cod sursa (job #698873) | Cod sursa (job #3128345) | Cod sursa (job #2972147)
#include <iostream>
#include <fstream>
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;
for( int i = 1 ; i <= max_best ; i++ )
out << v[best[i]] << " ";
return 0;
}