Pagini recente » Cod sursa (job #2109792) | Cod sursa (job #474938) | Cod sursa (job #777225) | Cod sursa (job #151020) | Cod sursa (job #1830879)
#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;
printf("%d", ans);
return 0;
}