Cod sursa(job #60305)

Utilizator devilkindSavin Tiberiu devilkind Data 13 mai 2007 17:48:06
Problema Subsir 2 Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.79 kb
#include <stdio.h>
#define NMAX 5002

long int a[NMAX],i,j,k,n,v[NMAX],ext[NMAX];

void citire()
{
freopen("scmm.in","r",stdin);
freopen("scmm.out","w",stdout);
scanf("%ld",&n);
for (i=1;i<=n;i++)
        scanf("%ld",&a[i]);
}

long int MINN(long int a, long int b)
{
if (a<b) return a;
return b;
}

void solve()
{
long int max=a[n],sol;
for (i=n-1;i;i--)
        if (a[i]>=max) {ext[i]=1;a[i]=max;}
v[0]=0;
v[1]=1;
for (i=2;i<=n;i++)
        {
        max=0;
        sol=NMAX+1;
        for (j=i-1;j>=1;j--)
                if ((a[j]>max)&&(a[j]<=a[i])) {sol=MINN(sol,v[j]+1);max=a[j];}
        v[i]=sol;
        }
sol=NMAX+1;
for (i=1;i<=n;i++)
        if ((ext[i])&&(v[i]<sol)) sol=v[i];
printf("%ld",sol);
}

int main()
{
citire();
solve();
return 0;
}