Cod sursa(job #322582)

Utilizator taloibogdanTaloi Bogdan Cristian taloibogdan Data 9 iunie 2009 11:01:24
Problema Subsir crescator maximal Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.54 kb
#include<stdio.h>
#include<algorithm>
using namespace std;
long n,lq,i,a[100050],q[100050],v[100050],m;
long* p;
int main()
{
 freopen("scmax.in","r",stdin);
 freopen("scmax.out","w",stdout);
 scanf("%ld",&n);
 lq=0;
 for(i=1;i<=n;++i)
    {scanf("%ld",&a[i]);
     p=lower_bound(q,q+lq,a[i]);
     if(q[p-q]<a[i])++p;
     q[p-q]=a[i];
     v[i]=p-q;
     if(p-q>lq)lq++;}
 m=lq;
 printf("%ld\n",m);
 for(i=n;i&&m;--i)
    if(v[i]==m){q[m]=a[i];--m;}
 for(i=1;i<=lq;++i)
    printf("%ld ",q[i]);
 printf("\n");
 return 0;
}