Pagini recente » Cod sursa (job #1217043) | Cod sursa (job #1794603) | Cod sursa (job #1610651) | Cod sursa (job #929688) | Cod sursa (job #2294103)
#include <iostream>
#include <stdio.h>
#include <algorithm>
using namespace std;
struct spec {
int val;
int pos;
bool operator< (spec B) {
if (val == B.val)
return pos < B.pos;
else
return val < B.val;
}
} v[5000];
int fin[5000];
int main() {
freopen("secv.in", "r", stdin);
freopen("secv.out", "w", stdout);
int n;
scanf("%d", &n);
for (int i = 0; i < n; i++) {
cin >> v[i].val;
v[i].pos = i;
}
sort(v, v + n);
int ind = 0;
fin[v[ind].pos] = ++ind;
for (int i = 1; i < n; i++) {
if (v[i].val == v[i-1].val)
fin[v[i].pos] = ind;
else
fin[v[i].pos] = ++ind;
}
int mini = -1;
for (int i = 0; i < n; i++) {
int seek = 2;
if (fin[i] == 1) {
//cout << "STARTING AT POS " << i << '\n';
for (int k = i + 1; k < n; k++) {
//cout << "SCANNING " << fin[k] << '\n';
if (fin[k] == seek) {
seek++;
if (seek == ind + 1) {
if (mini == -1 || k - i < mini)
mini = k - i + 1;
}
//cout << "OK. POWER UP TO " << ind << '\n';
}
}
}
}
if (ind == 1)
mini = 1;
cout << mini;
}