Pagini recente » Cod sursa (job #28133) | Cod sursa (job #342439) | Cod sursa (job #137038) | Cod sursa (job #2627058) | Cod sursa (job #1745598)
#include <iostream>
#include <cstdio>
#include <map>
#define MAXN 5050
#define inf 0x3fffffff
using namespace std;
int n;
int a[MAXN];
map<int, int> nr;
map<int, int> ult;
void citire()
{
scanf("%d", &n);
for (int i = 1; i <= n; i++) {
scanf("%d", &a[i]);
nr[a[i]] = 1;
}
}
int solve()
{
int best = inf;
if (n == 0)
return 0;
if (nr.size() == 1)
return 1;
for (int i = 1; i <= n; i++) {
if (a[i] == nr.begin()->first)
ult[a[i]] = i;
else {
auto it = nr.find(a[i]);
it--;
int look = it->first;
auto it2 = ult.find(look);
if (it2 != ult.end()) {
ult[a[i]] = it2->second;
it++; it++;
if (it == nr.end()) {
int crt = i - (it2->second) + 1;
if (crt < best)
best = crt;
}
}
}
}
if (best == inf)
return -1;
return best;
}
int main()
{
freopen("secv.in", "r", stdin);
freopen("secv.out", "w", stdout);
citire();
int rez = solve();
printf("%d", rez);
return 0;
}