Pagini recente » Cod sursa (job #2574853) | Cod sursa (job #2615065) | Cod sursa (job #1452131) | Cod sursa (job #372633) | Cod sursa (job #2765401)
#include <cstdio>
#include <algorithm>
#include <vector>
using namespace std;
int const N = 5001;
int v [N] , v2 [N] , v3 [N];
vector <int> E;
int bsearch (int n , int x){
int pas = (1 << 12) , r = 0;
while (pas){
if (pas + r <= n && v [v2 [pas + r]] < x)
r += pas;
pas >>= 1;
}
return 1 + r;
}
int main()
{
freopen ("secv.in" , "r" , stdin);
freopen ("secv.out" , "w" , stdout);
int n , ans = (1 << 30);
scanf ("%d" , &n);
for(int i = 1 ; i <= n ; ++ i){
scanf ("%d" , &v [i]);
v2 [i] = v [i];
}
sort (v2 + 1 , v2 + 1 + n);
int k = 1;
for(int i = 2 ; i <= n ; ++ i)
if (v2 [i] != v2 [i - 1])
v2 [++ k] = v2 [i];
for(int i = n ; i ; -- i)
if (v [i] == v2 [k])
for(int j = k - 1 , o = i - 1 ; j && o ; -- o)
if (v [o] == v2 [j]){
-- j;
if (j == 0)
ans = min (ans , i - o + 1);
}
printf ("%d" , ((ans == (1 << 30)) ? -1 : ans));
return 0;
}