Cod sursa(job #330904)

Utilizator mathboyDragos-Alin Rotaru mathboy Data 11 iulie 2009 23:23:40
Problema Subsir crescator maximal Scor 65
Compilator cpp Status done
Runda Arhiva educationala Marime 0.88 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=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;
}