Cod sursa(job #553007)

Utilizator APOCALYPTODragos APOCALYPTO Data 13 martie 2011 13:13:32
Problema Subsir crescator maximal Scor 35
Compilator cpp Status done
Runda Arhiva educationala Marime 1.24 kb
using namespace std;

#include<iostream>
#include<fstream>
#include<cstdio>
#define nmax 30010
#define oo 0x3f3f3f3f
long long N;
//int a[nmax];
int dp[nmax];
//int M[nmax];
//int P[nmax];
long long m[nmax];
long long X[nmax];

ofstream fout("subs.out");
void solve()
{   int lg=0;
long long dif=oo;
long long i,j,ans;
    for(i=1;i<=N;i++)
    {
        ans=0;
        m[i]=0;
        for(j=1;j<i;j++)
        {
            if(X[j]<X[i])
            if(ans<dp[j])
            { //ans=max(ans,dp[j]);
                ans=dp[j];
              m[i]=max(m[j],X[i]-X[j]);
            }
            else if(ans==dp[j])
            {
                m[i]=min(m[i],max(m[j],X[i]-X[j]));
            }
        }
        dp[i]=ans+1;
        if(dp[i]>lg)
        {
            lg=dp[i];
            dif=m[i];
        }
        else
        if(dp[i]==lg && dif>m[i])
        {dif=m[i];
        }
    }
   // cout<<lg<<" "<<dif<<"\n";
    printf("%d \n",lg);
}
void cit()
{

    scanf("%lld",&N);

    int i;
    for(i=1;i<=N;i++)
    {

        scanf("%lld",&X[i]);
    }


}
int main()
{
    freopen("scmax.in","r",stdin);
    freopen("scmax.out","w",stdout);
    cit();
    solve();

    return 0;
}