Pagini recente » Cod sursa (job #2507776) | Cod sursa (job #2265857) | Cod sursa (job #1279048) | Cod sursa (job #373458) | Cod sursa (job #1856350)
#include<cstdio>
#include<algorithm>
using namespace std;
struct doi
{
int x,y;
};
doi v[5001],v1[5001];
int v2[5001];
bool cmp(doi a,doi b)
{
return a.x<b.x;
}
int main()
{
freopen("secv.in","r",stdin);
freopen("secv.out","w",stdout);
int n,i,nr=0,j,val=0,l,minim=5001;
scanf("%d",&n);
for(i=1;i<=n;++i)
{
scanf("%d",&v[i].x);
v1[i].x=v[i].x;
v1[i].y=i;
}
sort(v1+1,v1+n+1,cmp);
v1[0].x=-1;
for(i=1;i<=n;++i)
{
if(v1[i].x!=v1[val].x)
{
val=i;
nr++;
}
v[v1[i].y].y=nr;
}
for(i=1;i<=n;++i)
{
if(v[i].y!=nr)
{
for(j=i+1;j<=n;++j)
{
if(v[j].y==v[i].y+1)
{
v2[i]=j-i;
break;
}
}
}
if(!v2[i])
v2[i]=5001;
}
for(i=1;i<=n;++i)
{
if(v[i].y==1)
{
j=i;
l=1;
while(j<=n&&v[j].y<nr)
{
l+=v2[j];
j+=v2[j];
}
if(v[j].y==nr&&l<minim)
minim=l;
}
}
if(minim==5001)
printf("-1\n");
else
printf("%d\n",minim);
return 0;
}