Pagini recente » Cod sursa (job #398090) | Cod sursa (job #1568765) | Cod sursa (job #1826931) | Cod sursa (job #2457869) | Cod sursa (job #1830883)
#include <cstdio>
#include <algorithm>
#define MAXN 5000
#define INF 0x3f3f3f3f
struct numar{
int idx, value;
bool operator <(const numar &aux) const{
return (value < aux.value);
}
}nr[MAXN];
int v[MAXN], d[MAXN];
int main()
{
freopen("secv.in", "r", stdin);
freopen("secv.out", "w", stdout);
int i, n, ans = INF, x, j;
scanf("%d", &n);
for(i=0; i<n; ++i){
scanf("%d", &nr[i].value);
nr[i].idx = i;
}
std::sort(nr, nr+n);
x = 0;
v[nr[0].idx] = 0;
d[0] = -1;
for(i=1; i<n; ++i)
{
if(nr[i].value > nr[i-1].value) x++;
v[nr[i].idx] = x;
d[i] = -1;
}
for(i=0; i<n; ++i)
{
if(v[i] == 0)
d[i] = i;
else
{
for(j=i-1; j>=0; --j)
{
if(v[j] == v[i]-1 && d[j] != -1){
d[i] = d[j];
break;
}
}
}
}
for(i=0; i<n; ++i)
if(d[i] != -1 && v[i] == x)
if(i-d[i]+1 < ans)
ans = i-d[i]+1;
if(ans != INF)
printf("%d", ans);
else printf("-1");
return 0;
}