Pagini recente » Cod sursa (job #1163304) | Cod sursa (job #2331597) | Cod sursa (job #2670726) | Cod sursa (job #2089248) | Cod sursa (job #1191169)
#include<fstream>
#include<algorithm>
#define N 100100
using namespace std;
ifstream f("scmax.in");
ofstream g("scmax.out");
int n,poz,lg,i,ll,l[N],a[N],p[N],sol[N];
int main(){
f >> n;
for(i = 1 ; i <= n ; ++i)
f >> a[i];
l[1] = a[1];
p[1] = 1;
lg = 1;
for(i = 2 ; i <= n ; ++ i)
{
poz = upper_bound(l + 1 , l + lg + 1 , a[i]) - l;
if(l[poz - 1] == a[i])
-- poz;
l[poz] = a[i];
p[i] = poz;
lg = max(lg , poz);
}
ll = lg;
g << lg << '\n';
for(i = n ; i ; -- i)
if(p[i] == lg)
{
sol[lg --] = i;
}
for(i = 1 ; i <= ll ; ++ i)
g << a[sol[i]] << ' ';
g << '\n';
return 0;
}