Pagini recente » Cod sursa (job #173540) | Cod sursa (job #2107036) | Cod sursa (job #739829) | Cod sursa (job #151170) | Cod sursa (job #1330130)
#include <cstdio>
#include <algorithm>
#include <vector>
#define Nmax 5000 + 10
using namespace std;
int n , i , j , poz , crt , M , SOL;
int A[Nmax];
vector < int > V;
vector < int > :: iterator it;
int main()
{
freopen("secv.in","r",stdin);
freopen("secv.out","w",stdout);
scanf("%d", &n);
for (i = 1; i <= n; ++i)
{
scanf("%d", &A[i]);
V.push_back(A[i]);
}
sort( V.begin() , V.end() );
it = unique( V.begin() , V.end() );
V.resize( distance ( V.begin() , it ) );
for (i = 1; i <= n; ++i)
{
A[i] = lower_bound( V.begin() , V.end() , A[i] ) - V.begin() + 1;
M = max( M , A[i] );
}
for (SOL = n + 1, i = 1; i <= n; ++i)
{
for (crt = 0 , j = i; j <= n && j - i + 1 <= SOL; ++j)
{
if (A[j] == crt + 1) ++crt;
if (crt == M) SOL = j - i + 1;
}
}
if (SOL == n + 1) printf("-1\n");
else printf("%d\n", SOL);
return 0;
}