Pagini recente » Cod sursa (job #2202141) | Cod sursa (job #1626962) | Cod sursa (job #2734608) | Cod sursa (job #266268) | Cod sursa (job #2770001)
#define MAX_N 5000
#include <fstream>
#include <set>
#include <map>
using namespace std;
ifstream fin("secv.in");
ofstream fout("secv.out");
int n, A[MAX_N + 1], DP[MAX_N + 1];
set<int> S;
map<int, int> M;
int main()
{
fin >> n;
for (int i = 1; i <= n; ++i)
{
fin >> A[i];
S.insert(A[i]);
}
{
int i = 0;
for (int v : S)
{
M[v] = ++i;
}
}
for (int i = 1; i <= n; ++i)
{
A[i] = M[A[i]];
}
const int un = S.size();
int res = (n == 1) ? 1 : n + 1;
for (int i = 1; i <= n; ++i)
{
if (A[i] == 1)
{
DP[A[i]] = i;
}
else
{
DP[A[i]] = DP[A[i] - 1];
if ((A[i] == un) && (DP[A[i]] != 0))
{
const int len = i - DP[A[i]] + 1;
if (res > len)
{
res = len;
}
}
}
}
if (res > n)
{
res = -1;
}
fout << res;
fin.close();
fout.close();
return 0;
}