Pagini recente » Cod sursa (job #708597) | Cod sursa (job #1823551) | Borderou de evaluare (job #2243345) | Cod sursa (job #2723437) | Cod sursa (job #1327026)
#include<stdio.h>
#include<algorithm>
using namespace std;
int d[5005],i,nr,j,sol,ok,n;
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;
}
sort(v+1,v+1+n,sortare1);
for(i=1;i<=n;i++)
{
if(v[i].x!=v[i-1].x)
{
nr++;
}
v[i].x=nr;
}
sort(v+1,v+1+n,sortare2);
sol=n+1;
for(i=1;i<=n;i++)
{
ok=0;
if(v[i].x!=1)
{
for(j=i-1;j>=1;j--)
{
// if(i==4&&j==2)
// printf("%d %d",v[j].x,d[j]);
if(v[j].x==v[i].x-1&&d[j]!=0)
{
ok=d[j];
}
}
d[i]=ok;
}
else d[i]=i;
//printf("%d ",d[i]);
// d[i]=ok;
if(v[i].x==nr&&i-d[i]+1<sol)
sol=i-d[i]+1;
}
if(sol==n+1)
printf("-1");
else printf("%d",sol);
return 0;
}