Pagini recente » Clasament 1_martie_simulare_oji_2024_clasa_9 | Cod sursa (job #162856) | Cod sursa (job #455324) | Cod sursa (job #229964) | Cod sursa (job #200960)
Cod sursa(job #200960)
/*secv infoarena*/
#include<fstream.h>
long v[5001],cit[5001];
int n,k,min=5002;
ifstream fin("secv.in");
ofstream fout("secv.out");
void citire()
{
int i;
fin>>n;
for(i=0;i<n;i++)
fin>>cit[i];
}
void pivotare(int i,int j,int &m)
{
int pivot=v[i];
while(i<j)
{
while(j>i && v[j]>=pivot) j--;
v[i]=v[j];
while(i<j && v[i]<=pivot) i++;
v[j]=v[i];
}
v[i]=pivot;
m=i;
}
void quick_sort(int p,int q)
{
int m;
if(p<q)
{
pivotare(p,q,m);
quick_sort(p,m-1);
quick_sort(m+1,q);
}
}
int cauta(int i)
{
int j;
for(j=0;j<k;j++)
if(cit[i]==v[j])
return 0;
return 1;
}
int afla(int j,int poz)
{
int i;
for(i=poz;i<n;i++)
if(cit[i]==v[j])
return i;
return -1;
}
int main()
{
int i,j,poz;
citire();
v[0]=cit[0];
k=1;
for(i=1;i<n;i++)
{
if(cauta(i)==1)
v[k++]=cit[i];
}
quick_sort(0,k-1);
for(i=0;i<n&&poz!=-1;i++)
{
if(v[0]==cit[i])
{
poz=i;
for(j=1;j<k&&poz!=-1;j++)
poz=afla(j,poz);
if(poz!=-1)
if(poz-i+1<min)
min=poz-i+1;
}
}
if(min==5002)
fout<<"-1\n";
else
fout<<min<<'\n';
return 0;
}