Pagini recente » Cod sursa (job #1177962) | Cod sursa (job #895401) | Cod sursa (job #535881) | Cod sursa (job #1939334) | Cod sursa (job #212043)
Cod sursa(job #212043)
#include<stdio.h>
#include<stdio.h>
long a[10001],h[10001],A[10001],B[10001],n,m,p,i,j,t,q,f,l;
long partit(long st, long dr)
{long i,j,m,piv,aa;
m=(st+dr)/2;
piv=a[m];
i=st-1;
j=dr+1;
while(1)
{do{++i;} while(a[i]<piv);
do{--j;} while(a[j]>piv);
if(i<j)
{aa=a[i];a[i]=a[j];a[j]=aa;}
else
return j;
}
}
void quicks(long st,long dr)
{long p;
if (st<dr)
{p=partit(st,dr);
quicks(st,p);
quicks(p+1,dr);
}
}
int main()
{
freopen("nextseq.in","r",stdin);
freopen("nextseq.out","w",stdout);
scanf("%ld%ld%ld",&n,&m,&p);
for(i=1;i<=n;++i)
scanf("%ld",&a[i]);
quicks(1,n);
for(i=1;i<=n;++i)
if(h[a[i]])++t;
else h[a[i]]=i-t;
for(i=1;i<=m;++i)
{scanf("%ld",&q);A[i+p-m]=h[q];}
for(i=1;i<=p;++i)
{scanf("%ld",&q);B[i]=h[q];}
f=1;
while(f)
{for(i=p;A[i]==n;--i)
A[i]=1;
A[i]+=1;
++l;
for(i=1;A[i]==B[i];++i);
if(A[i]>B[i])f=0;
}
printf("%ld\n",l-2);
return 0;
}