Cod sursa(job #1337570)

Utilizator ASTELOTudor Enescu ASTELO Data 9 februarie 2015 11:00:57
Problema Secv Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.87 kb
#include<cstdio>
#include<algorithm>
using namespace std;
int n,i,j,l1,l2,v[5001],k,cate,vc[5001],vec[5001],o=-1,mid;
int main ()
{
freopen("secv.in","r",stdin);
freopen("secv.out","w",stdout);
scanf("%d",&n);
for(i=1;i<=n;i++)
    {
    scanf("%d",&v[i]);
    vc[i]=v[i];
    }
sort(vc+1,vc+n+1);
v[0]=-1;
for(i=1;i<=n;i++)
    if(vc[i]!=vc[i-1])
        vec[++cate]=vc[i];
l1=cate;
l2=n;
while(l1<=l2)
    {
    mid=(l1+l2)/2;
    for(i=1;i+mid-1<=n;i++)
        {
        k=1;
        for(j=i;j<=i+mid-1;j++)
            if(v[j]==vec[k])
                {
                k++;
                if(k==cate+1)
                    break;
                }
        if(k==cate+1)
            break;
        }
    if(k==cate+1)
        {
        o=mid;
        l2=mid-1;
        }
    else
        l1=mid+1;
    }
printf("%d",o);
return 0;
}