Pagini recente » Cod sursa (job #3253684) | Cod sursa (job #2217738) | Cod sursa (job #2615027) | Cod sursa (job #2104311) | Cod sursa (job #1847528)
#include <cstdio>
#include <algorithm>
using namespace std;
struct Pozitie{
int nr, poz;
};
bool cmp(Pozitie a, Pozitie b){
return a.nr < b.nr;
}
Pozitie aux[5005];
int v[5005];
int main(){
freopen("secv.in", "r", stdin);
freopen("secv.out", "w", stdout);
int n, x, k = 0, min1 = (1LL << 31) - 1, i, j;
scanf("%d", &n);
for (i = 1; i <= n; ++i){
scanf("%d", &x);
aux[i].nr = x;
aux[i].poz = i;
}
sort(aux + 1, aux + n + 1, cmp);
for (i = 1; i <= n; ++i){
if (aux[i].nr != aux[i - 1].nr)
k++;
v[aux[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] == p)
++p;
}
if (p > k)
min1 = min(min1, j - i);
}
if (min1 == (1LL << 31) - 1)
min1 = -1;
printf("%d", min1);
return 0;
}