Pagini recente » Cod sursa (job #2711567) | Cod sursa (job #1147775) | Cod sursa (job #2609224) | Cod sursa (job #460327) | Cod sursa (job #464274)
Cod sursa(job #464274)
#include<fstream>
using namespace std;
int v[5005],h[5005],n,sir[5005],nr,minim=10000,inceput,sfarsit;
int rezolva(int v[],int start,int sf);
int main()
{
ifstream fin("secv.in");
ofstream fout("secv.out");
fin>>n;
int i;
for(i=1;i<=n;i++)
fin>>v[i],h[i]=v[i];
sort(h+1,h+n+1);
for(i=1;i<=n;i++)
{
if(nr==0)
sir[++nr]=h[i];
if(h[i]!=sir[nr])
sir[++nr]=h[i];
}
if(nr==1)
{
fout<<"1";
return 0;
}
for(i=1;i<=n;i++)
{
if(v[i]==sir[1])
{
inceput=i;
sfarsit=rezolva(v,i,n);
}
if((sfarsit-inceput+1)<minim && (sfarsit-inceput+1)>1)
minim=(sfarsit-inceput+1);
}
if(minim==10000)
fout<<"-1";
else
fout<<minim;
return 0;
}
int rezolva(int v[],int start,int sf)
{
int actual=2,i,pp=0;
while(actual!=nr+1 && pp==0)
{
int pres=0;
for(i=start;i<=sf;i++)
{
if(v[i]==sir[actual])
actual++,start=i,pres=1;
if(actual==nr+1)
return i;
}
if(pres==0)
pp=1;
}
return 0;
}