Pagini recente » Cod sursa (job #1500946) | Cod sursa (job #616612) | Cod sursa (job #2027945) | Cod sursa (job #607656) | Cod sursa (job #1943531)
#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]);
}
for (i = 1; i <= n; ++i)
v[i] = distance(q.begin(), q.find(v[i])) + 1;
mi = INT_MAX;
int poz2;
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, poz2 = i;
}
}
if (mi == INT_MAX) {g << -1; return 0;}
g << mi;
return 0;
}