Pagini recente » Cod sursa (job #2572002) | Cod sursa (job #359869) | Cod sursa (job #422048) | Cod sursa (job #1650383) | Cod sursa (job #69058)
Cod sursa(job #69058)
#include<stdio.h>
#include<stdlib.h>
long n,m,p,a[21000],b[21000],x[21000],h[51000];
void citire()
{
freopen("nextseq.in","r",stdin);
freopen("nextseq.out","w",stdout);
scanf("%ld %ld %ld",&n,&m,&p);
long i;
for(i=0;i<n;++i) scanf("%ld",&x[i]);
for(i=0;i<m;++i) scanf("%ld",&a[m-i]);
for(i=0;i<p;++i) scanf("%ld",&b[p-i]);
}
int cmp(const void*a, const void*b)
{
return *(int*)a-*(int*)b;
}
void transf()
{
qsort(x,n,sizeof(x[0]),cmp);
long i;
for(i=0;i<n;++i) h[x[i]]=i;
for(i=1;i<=m;++i)
a[i]=h[a[i]];
for(i=1;i<=p;++i) b[i]=h[b[i]];
a[0]=m;
b[0]=p;
}
void calcul()
{
long j,sol=0,i,ok,stop;
ok=1;
while(ok==1)
{
ok=0;
stop=0;
for(i=1;i<=a[0];++i)
{
if(a[i]!=b[i]) ok=1;
if(a[i]<n-1&&stop==0)
{
stop=1;
a[i]++;
for(j=i-1;j>=1;j--) a[j]=0;
}
}
if(stop==0)
{
a[0]++;
for(i=1;i<a[0];++i) a[i]=0;
}
sol++;
if (a[0]!=b[0]) ok=1;
}
printf("%ld",sol-2);
}
int main()
{
citire();
transf();
calcul();
return 0;
}