Pagini recente » Cod sursa (job #1904929) | Cod sursa (job #3128092) | Cod sursa (job #720839) | Cod sursa (job #3171263) | Cod sursa (job #422124)
Cod sursa(job #422124)
#include<stdio.h>
int n,v[1<<17],poz[1<<17];
int main()
{
int i,st,dr,m;
freopen("scmax.in","r",stdin);
freopen("scmax.out","w",stdout);
scanf("%d",&n);
for (i=1;i<=n;++i)
scanf("%d\n",&v[i]);
for (i=1;i<=n;++i)
if (v[i]>=poz[poz[0]])
poz[++poz[0]]=v[i];
else
{
st=1;
dr=poz[0];
while(st<dr)
{
m=(st+dr)/2;
if (v[m]>=st)
st=m+1;
else
dr=m-1;
}
poz[st]=v[i];
}
printf("%d\n",poz[0]);
for (i=1;i<=poz[0];++i)
printf("%d ",poz[i]);
return 0;
}