Cod sursa(job #812614)

Utilizator vlcmodanModan Valentin vlcmodan Data 14 noiembrie 2012 08:36:33
Problema Subsir crescator maximal Scor 45
Compilator cpp Status done
Runda Arhiva educationala Marime 0.97 kb
#include <iostream>
#include<stdio.h>
#define infinit 100001
using namespace std;
int a[infinit],b[infinit],i,j,n,maxi,m,x,maxim;
void cresc(int n,int x,int y)
{

   int i;
    for(i=n;i>=1;i--)
        {

            if(a[i]<=y&&b[i]==x)
            {
                cresc(i-1,b[i]-1,a[i]);
                printf("%d ",a[i]);
                i=0;
            }
        }

}
void cres()//subsir crescator maximal
{
    int i,j,n;
    scanf("%d",&n);
    for(i=1;i<=n;i++)
        scanf("%d",&a[i]);
        b[1]=1;
    for(i=2;i<=n;i++)
        {
            maxi=1;
            for(j=i-1;j>=1;j--)
                if(b[j]+1>maxi&&a[j]<a[i])
                    maxi=b[j]+1;
            b[i]=maxi;
            if(maxi>maxim)
            maxim=maxi;
        }

       printf("%d\n",maxim);
        cresc(n,maxim,infinit);
}




int main()
{
    freopen("scmax.in","r",stdin);
    freopen("scmax.out","w",stdout);
    cres();
    return 0;
}