Pagini recente » Cod sursa (job #1837883) | Monitorul de evaluare | Cod sursa (job #1290225) | Monitorul de evaluare | Cod sursa (job #2011479)
#include <cstdio>
#include <algorithm>
using namespace std;
const int NMAX = 5005;
struct ABC
{
int nr, poz;
};
int v[NMAX];
ABC a[NMAX];
bool cmp(ABC first, ABC second)
{
return first.nr < second.nr;
}
int main()
{
int minim = (1LL << 31) - 1, n, i, j, x, k = 0;
freopen("secv.in","r",stdin);
freopen("secv.out","w",stdout);
scanf("%d", &n);
for(i = 1;i <= n; ++i) {
scanf("%d", &x);
a[i].nr = x;
a[i].poz = i;
}
a[0].nr = -1;
sort(a + 1, a + n + 1, cmp);
for(i = 1;i <= n; ++i) {
if(a[i].nr != a[i - 1].nr) {
k++;
}
v[a[i].poz] = k;
}
for(i = 1;i <= n; ++i) {
if(v[i] == 1) {
int p = 2;
for(j = i + 1;j <= n && p <= k; ++j) {
if(v[j] == 1 && p == 2) {
i = j;
}
if(v[j] == p) {
++p;
}
}
if(p > k) {
minim = min(minim, j - i);
}
}
}
if(minim == (1LL << 31) - 1) {
minim = -1;
}
printf("%d\n", minim);
return 0;
}