Pagini recente » Cod sursa (job #1094945) | Cod sursa (job #2633247) | Cod sursa (job #1380043) | Cod sursa (job #2145939) | Cod sursa (job #53369)
Cod sursa(job #53369)
using namespace std;
#include<stdio.h>
#define nmax 5050
#define infinit 10000
FILE *fin=fopen("secv.in","r"),
*fout=fopen("secv.out","w");
long long c[nmax],a[nmax],s[nmax];
int i,j,k,n,min,sol;
long long aux;
void sort()
{
for(i=1;i<=n;i=i+1)
{
j=i;
while(j/2 && a[j/2]<a[j])
{
aux=a[j/2];
a[j/2]=a[j];
a[j]=aux;
j=j/2;
}
}
i=n;
while(i>1)
{
aux=a[1];
a[1]=a[i];
a[i]=aux;
i=i-1;
j=1;
while(1)
{
k=2*j;
if(k>i) break;
if(k+1<=i && a[k+1]>a[k]) k=k+1;
if(a[j] >= a[k]) break;
aux=a[j];
a[j]=a[k];
a[k]=aux;
j=k;
}
}
}
void solve()
{
int i,j,p,len;
s[1]=a[1];
p=2;
for (i=2; i<=n; i++)
{ if (s[p-1]<a[i]) { s[p]=a[i]; p++; } }
len=p-1;
for (i=1; i<=n-len+1; i++)
{
if (c[i]==min)
{
p=1; j=i;
while (p<len)
{
j++;
if (s[p+1]==c[j]) p++;
if (p==len) break;
}
if (j-i+1<sol) sol=j-i+1;
}
}
}
int main()
{
fscanf(fin,"%d\n",&n);
for (i=1; i<=n; i++){
fscanf(fin,"%lld",&c[i]); a[i]=c[i]; }
sort();
sol=infinit;
min=a[1];
solve();
/* for (i=1; i<=n; i++)
fprintf(fout,"%lld ",s[i]);*/
if (sol>n) sol=-1;
fprintf(fout,"%d",sol);
fclose(fin);
fclose(fout);
return 0;
}