Pagini recente » Cod sursa (job #963628) | Cod sursa (job #1025774) | Cod sursa (job #3219123) | Cod sursa (job #539320) | Cod sursa (job #1327090)
#include<stdio.h>
#include<algorithm>
using namespace std;
int d[5005],i,nr,j,sol,ok,n,last_v;
struct str
{
int x,poz;
};
str v[5005];
bool sortare1(str a , str b)
{
return a.x<b.x;
}
bool sortare2(str a, str b)
{
return a.poz<b.poz;
}
int main()
{
freopen("secv.in","r",stdin);
freopen("secv.out","w",stdout);
scanf("%d",&n);
for(i=1;i<=n;i++)
{
scanf("%d",&v[i].x);
v[i].poz=i;
}
v[0].x=-1;
sort(v+1,v+1+n,sortare1);
last_v=-1;
for(i=1;i<=n;i++)
{
if(v[i].x!=last_v)
{
nr++;
}
last_v=v[i].x;
v[i].x=nr;
}
sort(v+1,v+1+n,sortare2);
//for(i=1;i<=n;i++)
// printf("%d ",v[i].x);
sol=n+1;
for(i=1;i<=n;i++)
{
ok=0;
if(v[i].x!=1)
{
for(j=i-1;j>=1;j--)
{
if(v[j].x==v[i].x-1&&d[j]!=0)
{
ok=d[j];
break;
}
}
d[i]=ok;
}
else d[i]=i;
if(v[i].x==nr&&i-d[i]+1<sol&&d[i]!=0)
sol=i-d[i]+1;
}
if(sol==n+1)
printf("-1");
else printf("%d",sol);
return 0;
}