Pagini recente » Cod sursa (job #409821) | Cod sursa (job #1334016) | Cod sursa (job #1665563) | Cod sursa (job #46504) | Cod sursa (job #917638)
Cod sursa(job #917638)
#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;
}