Pagini recente » Cod sursa (job #206331) | Cod sursa (job #1223977) | Cod sursa (job #944868) | Cod sursa (job #2431145) | Cod sursa (job #2294087)
#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 ind2 = 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] == ind2) {
ind2++;
if (ind2 == ind + 1) {
if (mini == -1 || k - i < mini)
mini = k - i + 1;
}
//cout << "OK. POWER UP TO " << ind << '\n';
}
}
}
}
cout << mini;
}