Pagini recente » Cod sursa (job #1631293) | Cod sursa (job #2988428) | Cod sursa (job #529737) | Cod sursa (job #3171024) | Cod sursa (job #60307)
Cod sursa(job #60307)
#include <stdio.h>
#define NMAX 5002
long int a[NMAX],i,j,k,n,v[NMAX],ext[NMAX];
void citire()
{
freopen("subsir2.in","r",stdin);
freopen("subsir2.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;
}