Pagini recente » Cod sursa (job #3234969) | Cod sursa (job #647201) | Cod sursa (job #1075406) | Cod sursa (job #2236532) | Cod sursa (job #908778)
Cod sursa(job #908778)
#include<stdio.h>
#define max 100001
int A[max];
int Lc[max];
int Length,Max;
int celiIndex(int l,int r,int key)
{
int m;
while( (r-l)>1 )
{
m=(r-l)/2+l;
(Lc[m] >= key ? r:l) = m;
}
return r;
}
int main()
{
freopen("scmax.in","r",stdin);
freopen("scmax.out","w",stdout);
scanf("%d",&Length);
for(int i=1;i<=Length;i++) scanf("%d",&A[i]);
Lc[0]=A[0];
int len=1;
for(int i=1;i<=Length;i++)
{
if(Lc[0]>A[i])
Lc[0]=A[i];
else if(Lc[len-1]<A[i])
Lc[len++]=A[i];
else
Lc[celiIndex(-1,len-1,A[i])]=A[i];
}
printf("%d\n",len-1);
for(int i=1;i<len;i++)
printf("%d ",Lc[i]);
return 0;
}