Cod sursa(job #330899)

Utilizator mathboyDragos-Alin Rotaru mathboy Data 11 iulie 2009 23:15:51
Problema Subsir crescator maximal Scor 35
Compilator cpp Status done
Runda Arhiva educationala Marime 0.86 kb
#include <cstdio>
#define DIM 100001
int l[DIM],n,p2,a[DIM],p[DIM],j,i,max;
using namespace std;

void fase1()
{
     l[n]=1; p[n]=-1;
     for( i=n-1; i>=1; --i)
          
          for(l[i]=1, p[i]=-1,j=i+1; j<=n; ++j)
                   
                   if(a[i] < a[j] && l[i]<l[j]+1 )
                        l[i]=l[j]+1; p[i]=j;
                   
        
}
void fase2()
{    
     max=l[1];
     p2=p[1];
     for(i=2; i<=n; ++i) if(l[i]>max) max=l[i],p2=p[i]; //determin maximul
     printf("%d\n",max); //lungimea cmlsc
     for(i=p2; i!=-1; i=p[i])
     printf("%d ",a[i]);
}                   
void read()
{
     scanf("%d\n",&n);
     for(i=1; i<=n; ++i) scanf("%d",&a[i]);
}     
int main()
{
    freopen("scmax.in","r",stdin);
    freopen("scmax.out","w",stdout);
    read();
    fase1();
    fase2();
    return 0;
}