Pagini recente » Cod sursa (job #2475881) | Cod sursa (job #1147708) | Cod sursa (job #2927680) | Cod sursa (job #1053068) | Cod sursa (job #1943533)
#include <fstream>
#include <iostream>
#include <set>
#include <climits>
#define nmax 5002
using namespace std;
ifstream f("secv.in");
ofstream g("secv.out");
set <int> q;
int v[nmax], s[nmax];
int dr[nmax];
int main()
{
int n, i;
int mi = INT_MAX, poz;
f >> n;
for (i = 1; i <= n; ++i) {
f >> v[i];
if (v[i] < mi) mi = v[i], poz = i;
q.insert(v[i]);
}
if (q.size() == 1) {g << 1; return 0; }
for (i = 1; i <= n; ++i)
v[i] = distance(q.begin(), q.find(v[i])) + 1;
mi = INT_MAX;
for (i = poz; i <= n; ++i) {
if (v[i] == 1) s[v[i]] = i, dr[i] = i;
else if (s[v[i] - 1]){
s[v[i]] = i;
dr[i] = dr[s[v[i] - 1]];
if (v[i] == q.size()&& i - dr[i] + 1 < mi) mi = i - dr[i] + 1;
}
}
if (mi == INT_MAX) {g << -1; return 0;}
g << mi;
return 0;
}