Cod sursa(job #1552591)

Utilizator ASTELOTudor Enescu ASTELO Data 18 decembrie 2015 12:18:23
Problema Subsir crescator maximal Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.87 kb
#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;
}