Cod sursa(job #27192)

Utilizator zepusSpuze Cristian-Iulius zepus Data 6 martie 2007 11:12:59
Problema Secv Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.87 kb
#include <fstream.h>
long a[5000],b[5000];
int main()
  {
   int n,i,j,max=0,d,dmin=5001,x,y,xmin,ymin,aux,ok,max1=0;
   ifstream f("secv.in");
   ofstream g("secv.out");
   f>>n;
   for (i=1;i<=n;i++)
     {
      ok=0;
      f>>a[i];
      for (j=i-1;j>=0;j--)
	{
	 if (a[i]>a[j] && (b[i]==0 || b[i]<=b[j]))
	   {
	    b[i]=b[j]+1;
	    if (max1<b[i])
	      max1=b[i];
	   }
	 if (a[i]==a[j])
	   ok=1;
	}
      if (ok==0)
	max++;
     }

if (max1==max)
  {
   for (i=1;i<=n;i++)
    {
     if (b[i]==1)
       {
	x=i;
	aux=1; j=i;
	while (j<=n && aux!=max)
	  {
	   if (b[j]==aux+1)
	     aux++;
	   j++;
	  }
	if (aux==max)
	  {
	   y=j-1;
	   d=y-x;
	  }
       }
     if (dmin>d)
       {
	xmin=x;
	ymin=y;
	dmin=d;
       }
    }
   g<<ymin-xmin+1;
  }

else
  g<<"-1\n";

   f.close();
   g.close();
   return 0;
  }