Pagini recente » Cod sursa (job #1108708) | Cod sursa (job #2271566) | Cod sursa (job #2676540) | Cod sursa (job #2480089) | Cod sursa (job #1569890)
#include <cstdio>
#include <set>
#include <algorithm>
using namespace std;
const int maxN = 5000;
const int inf = 1 << 30;
typedef set<int> :: iterator sit;
set<int> uniques;
int v[maxN + 1];
int l[maxN + 1];
int Ans = inf;
int main() {
freopen("secv.in", "r", stdin);
freopen("secv.out", "w", stdout);
int N, n;
scanf("%d", &N);
for(int i = 1; i <= N; ++ i) {
scanf("%d", &v[i]);
uniques.insert(v[i]);
}
n = uniques.size();
if(n == 1)
Ans = 1;
for(int i = 1; i <= N; ++ i) {
if(v[i] == *uniques.begin()) {
for(struct{sit a; int b;} j = {++ uniques.begin(), i + 1}; j.a != uniques.end() and j.b <= N; ++ j.b) {
if(v[j.b] == *j.a) ++ j.a;
if(j.a == uniques.end())
Ans = min(Ans, j.b - i + 1);
}
}
}
printf("%d\n", (Ans == inf) ? -1 : Ans);
return 0;
}