Cod sursa(job #210273)

Utilizator taloibogdanTaloi Bogdan Cristian taloibogdan Data 27 septembrie 2008 10:26:40
Problema Subsir crescator maximal Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.69 kb
#include<stdio.h>
long n,l,i,a[100001],q[100001],p[100001],f,j,kl,k,lp;
int main()
{
 freopen("scmax.in","r",stdin);
 freopen("scmax.out","w",stdout);
 scanf("%ld",&n);
 l=0;
 for(i=1;i<=n;++i)
    {scanf("%ld",&a[i]);
     f=0;
     for(j=1;j<=l;++j)
        if(a[i]<=q[j])
          {f=1;
           q[j]=a[i];
           p[++lp]=j;
           break;
          }
     if(a[i]!=q[l])
     if(!f)
     {
      q[++l]=a[i];
      p[++lp]=l;
     }
    }
 printf("%ld\n",l);
 for(kl=lp;kl;--kl)if(p[kl]==l)break;
 k=kl;
 for(i=l-1;i;--i)
    {
     for(k;k;--k)if(p[k]==i)break;
     q[i]=a[k];
    }
 for(i=1;i<l;++i)printf("%ld ",q[i]);
 printf("%ld\n",a[kl]);
 return 0;
}