Pagini recente » Cod sursa (job #594676) | Istoria paginii utilizator/edy_3dz | Cod sursa (job #220868) | Rating Colcer Paul (ColcerPaul) | Cod sursa (job #1574849)
#include <cstdio>
#include <algorithm>
using namespace std;
struct numar
{
int x, poz;
};
numar aux[5005];
int v[5005], last[5005];
bool cmp(numar a, numar b)
{
return a.x < b.x;
}
int main()
{
freopen("secv.in", "r", stdin);
freopen("secv.out", "w", stdout);
int n, nr, i;
scanf("%d", &n);
for(i=1; i<=n; i++)
{
scanf("%d", &v[i]);
aux[i].x=v[i];
aux[i].poz=i;
}
sort(aux+1, aux+n+1, cmp);
v[aux[1].poz]=nr=1;
for(i=2; i<=n; i++)
{
if (aux[i].x!=aux[i - 1].x)
nr++;
v[aux[i].poz]=nr;
}
int minim=-1;
for(i=1; i<=n; i++)
{
if (v[i]==1)
last[1]=i;
else
{
if (last[v[i]-1]!=0)
last[v[i]]=last[v[i]-1];
}
if(v[i] == nr && last[nr]!=0)
{
if (i-last[nr]+1<minim || minim==-1)
minim=i-last[nr]+1;
}
}
if (n!=0)
printf("%d\n", minim);
return 0;
}