Cod sursa(job #60312)

Utilizator MARCELMIHALCEA MARICEL MARCEL Data 13 mai 2007 17:56:55
Problema Subsir 2 Scor 22
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.73 kb

#include<stdio.h>

#define minim( x , y )  ( x < y ? x : y )

#define Nmax 5001

int v[Nmax],a[Nmax],t[Nmax],n;

int main()
{

int i,j,min,S,no;

freopen("subsir2.in","r",stdin);
freopen("subsir2.out","w",stdout);

scanf("%d",&n);

for(i=1;i<=n;i++)
 scanf("%d",v+i);

 a[n]=1;t[n]=0;

 for(i=n-1;i;i--)
  {
  min=10001;
  a[i]=5001;

    for(j=i+1;j<=n;j++)
   {
   if( v[i] <= v[j] && v[j] < min )
      if ( a[i] > a[j]+1 )
	a[i] = a[j] + 1, t[i] = j;

   if( v[j] >= v[i] ) min= minim(min,v[j]);
   }

  if( a[i] == 5001 ) a[i] = 1, t[i] = i;

  }


  no=v[1],S=a[1];

  for(i=2;i<=n;i++)
   if ( v[i] <= no && a[i] < S )
      no = v[i] , S = a[i];


  printf("%d\n",S);
  return 0;
  }