Pagini recente » Cod sursa (job #2858737) | Cod sursa (job #1507976) | Cod sursa (job #2022867) | Cod sursa (job #2367537) | Cod sursa (job #1162166)
#include <cstdio>
#include <algorithm>
#define Nmax 100005
using namespace std;
int v[Nmax],L[Nmax],poz[Nmax];
int main()
{
int i,N,len,p;
freopen ("scmax.in","r",stdin);
freopen ("scmax.out","w",stdout);
scanf("%d", &N);
for(i=1;i<=N;++i)
scanf("%d", &v[i]);
L[1]=v[1]; len=1; poz[1]=1;
for(i=2;i<=N;++i)
{
p=upper_bound(L+1,L+len+1,v[i])-L;
if(L[p-1]==v[i])
--p;
L[p]=v[i];
poz[i]=p;
len=max(len,p);
}
printf("%d\n", len);
p=len;
for(i=N;i;--i)
if(poz[i]==p)
L[p--]=v[i];
for(i=1;i<=len;++i)
printf("%d ", L[i]);
printf("\n");
return 0;
}