Pagini recente » Cod sursa (job #522064) | Cod sursa (job #2366064) | Echipa infoarena | Istoria paginii runda/ana-are-mere | Cod sursa (job #1569206)
#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;
scanf("%d", &n);
for (register int 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 (register int i = 2; i <= n; ++i)
{
if (aux[i].x != aux[i - 1].x)
++nr;
v[aux[i].poz] = nr;
}
//nr ramane nr de numere diferite
/* for (register int i = 1; i <= n; ++i)
printf("%d ", v[i]); */
int minim = -1;
for (register int i = 1; i <= n; ++i)
if (last[v[i] - 1] != 0)
{
last[v[i]] = last[v[i] - 1];
if(v[i] == nr)
if (i - last[nr] + 1 < minim || minim == -1)
minim = i - last[nr] + 1;
}
else
if (v[i] == 1)
last[1] = i;
printf("%d\n", minim);
return 0;
}