Pagini recente » Cod sursa (job #448673) | Cod sursa (job #2071310) | Cod sursa (job #1831044) | Cod sursa (job #1380632) | Cod sursa (job #629085)
Cod sursa(job #629085)
#include<cstdio>
#define NMAX 100003
using namespace std;
int a[NMAX],l[NMAX],poz[NMAX],b[NMAX];
int n,u,p,m,i,max;
using namespace std;
void cit()
{freopen("scmax.in","rt",stdin);
freopen("scmax.out","wt",stdout);
scanf("%d",&n);
for(i=1;i<=n;i++) scanf("%d", &a[i]);
}
void afis(int f)
{if(f)
{afis(l[f]);
printf("%d ",a[f]);
}
}
int main()
{cit();
poz[1]=1;
max=1;
for(i=2;i<=n;i++)
{p=1;
u=max;
while(p<=u)
{m=(u-p)/2+p;
if(a[i]>a[poz[m]]) p=m+1;
else u=m-1;
}
if(p>max) max++;
poz[p]=i;
l[i]=poz[p-1];
}
printf("%d\n",max);
afis(poz[max]);
printf("\n");
return 0;
}