Pagini recente » Cod sursa (job #2981767) | Cod sursa (job #499352) | Cod sursa (job #245686) | Cod sursa (job #1556383) | Cod sursa (job #464271)
Cod sursa(job #464271)
#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];
}
//for(i=1;i<=nr;i++)
//fout<<sir[i]<<" ";
//fout<<endl;
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;
if(nr==1)
return start;
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;
}