Pagini recente » Cod sursa (job #312675) | Cod sursa (job #1452325) | Cod sursa (job #1194508) | Cod sursa (job #1849836) | 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;
}