Pagini recente » Cod sursa (job #1603527) | Cod sursa (job #1572791) | Cod sursa (job #2475524) | Cod sursa (job #1604436) | Cod sursa (job #415184)
Cod sursa(job #415184)
#include<stdio.h>
#define mm 100005
int i,v[mm],poz,k,n,l[mm],sol[mm],s[mm],max,p,j;
int cb(int st, int dr)
{
int pz=0,mij;
while(st<=dr)
{
mij=(st+dr)>>1;
if(s[mij]>v[i]){dr=mij-1;pz=mij;}
else st=mij+1;
}
return pz;
}
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]);
for(i=1;i<=n;i++)
{
poz=cb(0,k);
if(poz)
{
s[k]=v[i];
l[i]=k;
}
else
{
s[++k]=v[i];
l[i]=k;
}
if(l[i]>max)
{
max=l[i];
p=i;
}
}
printf("%d\n",max);
while(p)
{
if(l[p]==max)
{
sol[++j]=v[p];
max--;
}
p--;
}
for(i=j;i>=1;i--)
printf("%d ",sol[i]);
return 0;
}