Pagini recente » Cod sursa (job #1242624) | Cod sursa (job #2255113) | Cod sursa (job #2663359) | Cod sursa (job #1941931) | Cod sursa (job #178742)
Cod sursa(job #178742)
# include <stdio.h>
# include <string.h>
const int nmax=5001;
long v[nmax],c[nmax];
int N,i,j,k,pm,pM,p,ok,L;
void qsort(long v[nmax], int left, int right)
{ int i=left, j=right;
long x=v[(i + j)/2],y;
do
{ while (v[i] < x) i++;
while (v[j] > x) j--;
if (i <= j){
y=v[i]; v[i]=v[j]; v[j]=y;
i++; j--;
}
} while (i <= j);
if (left < j) qsort(v, left, j);
if (i < right) qsort(v, i, right);
}
int main()
{
freopen("secv.in","r",stdin);
freopen("secv.out","w",stdout);
scanf("%d",&N);
pM=pm=1;
for(i=1;i<=N;i++)
{
scanf("%ld",&v[i]);
c[i]=v[i];
if (v[i]<v[pm]) pm=i;
if (v[i]>=v[pM]) pM=i;
}
qsort (c,1,N);
k=1;
for (j=2;j<=N;j++)
if (c[k]!=c[j]) {
c[k+1]=c[j];
k++;
}
j=1;ok=0;p=pm;
while (p<=pM && !ok)
{
if (v[p]==c[1]) {
i=p;
while (i<=pM && j<=k){
if (v[i]==c[j]) j++;
i++;
}
if (j>k) {
ok=1;
L=i-p;
break;
}
else p++;
}
else p++;
}
if (ok) printf("%d",L);
else printf("-1");
return 0;
}