Cod sursa(job #987622)

Utilizator BlaugranasEnal Gemaledin Blaugranas Data 21 august 2013 08:32:33
Problema Secv Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.1 kb
#include<cstdio>
int a[5001],i,j,k,m,n,b[5001],s,e,p=5001,l,f=1,g; 
int main()
{
    freopen("secv.in","r",stdin),
    freopen("secv.out","w",stdout),
    scanf("%d",&n);
    for(i=1;i<=n;i++)
          scanf("%d",&a[i]);
    while(1)
    {
          if(f>=n)
               break;
          for(m=0,i=f;i<=n;i++)
          {
               if(a[b[m]]<a[i])
                     b[++m]=i;
               for(j=0,k=m;j<k;)
               if(a[b[(j+k)/2]]<a[i])
                     j=(j+k)/2+1;
               else
                     k=(j+k)/2;
               if(a[i]<a[b[j]])
                     b[j]=i;
          }
          for(g=0,s=f;s<=b[m]&&!g;s++)
          {
               for(e=k=0;b[k]<s;k++);
               for(i=s;i<b[m];i++)
               for(l=1,j=k;j<=m&&l;j++)
               if(a[i]==a[b[j]])
                     l=0,e++;
               if(e==b[m]-s&&e+1<p)
               {
                     p=e+1;
                     if(b[1]<=s)
                           g=1;
               }
          }
          f=b[m]+1;
    }
    printf("%d",p==5001?-1:p);
}