Pagini recente » Cod sursa (job #2367915) | Cod sursa (job #2834351) | Cod sursa (job #2290264) | Cod sursa (job #395295) | Cod sursa (job #69027)
Cod sursa(job #69027)
//95 de puncte
#include<stdio.h>
#include<stdlib.h>
FILE*f=fopen("nextseq.in","r");
FILE*g=fopen("nextseq.out","w");
long n,m,p,a[21000],b[21000],x[21000],h[51000];
void read()
{
fscanf(f,"%ld %ld %ld",&n,&m,&p);
long i;
for(i=0;i<n;++i) fscanf(f,"%ld",&x[i]);
for(i=0;i<m;++i) fscanf(f,"%ld",&a[m-i]);
for(i=0;i<p;++i) fscanf(f,"%ld",&b[p-i]);
}
int cmp(const void*a, const void*b)
{
return *(int*)a-*(int*)b;
}
void transform()
{
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 solve()
{
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++;
}
fprintf(g,"%ld",----sol);
}
int main()
{
read();
transform();
solve();
return 0;
}