Pagini recente » Cod sursa (job #1266635) | Cod sursa (job #451014) | Cod sursa (job #1911545) | Cod sursa (job #2195416) | Cod sursa (job #1552591)
#include<cstdio>
int v[100001],vc[100001],vec[100001],l1,l2,mid,i,j,n,max;
int main ()
{
freopen("scmax.in","r",stdin);
freopen("scmax.out","w",stdout);
scanf("%d",&n);
for(i=1;i<=n;i++)
{
scanf("%d",&v[i]);
l1=1;
l2=vc[0];
int o=0;
while(l1<=l2)
{
mid=(l1+l2)/2;
if(vc[mid]>=v[i])
{
o=mid;
l2=mid-1;
}
else
l1=mid+1;
}
if(o==0)
{
vc[0]++;
vc[vc[0]]=v[i];
vec[i]=vc[0];
if(vc[0]>max)
max=vc[0];
}
else
{
vc[o]=v[i];
vec[i]=o;
}
}
printf("%d\n",max);
int qq=0;
for(i=n;i>=1;i--)
if(vec[i]==max)
{
vc[++qq]=v[i];
max--;
}
for(i=qq;i>=1;i--)
printf("%d ",vc[i]);
return 0;
}