Pagini recente » Cod sursa (job #3039064) | Cod sursa (job #2035587) | Cod sursa (job #896402) | Cod sursa (job #613316) | Cod sursa (job #1328152)
#include <fstream>
#include <cstdlib>
#define nMax 5000
using namespace std;
ifstream x ("secv.in");
ofstream y ("secv.out");
int n;
int v[nMax],a[nMax];
int start[nMax];
void quicksort(int a[], int l, int r)
{
int i,j;
int pivot,poz;
int aux;
poz=rand()%(r-l+1)+l;
pivot=a[poz];
aux=a[poz];
a[poz]=a[l];
a[l]=aux;
i=l+1;
poz=l;
for(j=l+1;j<=r;j++)
if(pivot>a[j])
{
aux=a[i];
a[i]=a[j];
a[j]=aux;
i++;
}
aux=a[poz];
a[poz]=a[i-1];
a[i-1]=aux;
if(l<i-2)
quicksort(a,l,i-2);
if(i<r)
quicksort(a,i,r);
}
int main()
{
int i,j;
x>>n;
int k=0;
bool flag;
for(i=0;i<n;i++)
{
x>>v[i];
flag=true;
for(j=0;j<k;j++)
if(v[i]==a[j])
{
flag=false;
break;
}
if(flag==true)
{
a[k]=v[i];
k++;
}
}
quicksort(a,0,k-1);
/*
for(i=0;i<k;i++)
y<<a[i]<<' ';
y<<'\n';
*/
int N=n-k;
int c1,c2;
int minn=nMax+1;
for(i=0;i<N;i++)
if(v[i]==a[0])
{
c1=i+1;
c2=1;
while(c2<k && c1<n)
if(v[c1]==a[c2])
{
c1++;
c2++;
}
else
c1++;
if(c2==k)
{
start[i]=c1-i;
minn=min(minn,start[i]);
}
}
/*
for(i=0;i<n;i++)
y<<start[i]<<' ';
y<<'\n';
*/
if(minn<=nMax)
y<<minn<<'\n';
else
y<<-1<<'\n';
return 0;
}