Pagini recente » Cod sursa (job #1331748) | Cod sursa (job #2673329) | Cod sursa (job #1291759) | Cod sursa (job #1727680) | Cod sursa (job #196181)
Cod sursa(job #196181)
#include<stdio.h>
#define NMAX 10000
int main(){
freopen("nextseq.in","r",stdin);
freopen("nextseq.out","w",stdout);
int n,m,p,i,j,k,nr=0,nr1=1,max=0,min=10000,dif,gasit;
int x[NMAX],a[NMAX],b[NMAX],c[NMAX+1]={0},pp[NMAX]={1};
scanf("%d%d%d",&n,&m,&p);
for(i=0;i<n;++i) {
scanf("%d",&x[i]);
if(max<x[i]) max=x[i];
if(min>x[i]) min=x[i];
}
for(i=0;i<m;++i) scanf("%d",&a[i]);
for(i=0;i<p;++i) scanf("%d",&b[i]);
for(i=0;i<n;++i) c[x[i]]=1;
k=0;
for(i=min;i<=max;++i)
if(c[i]) {c[i]=k;k++;}
for(i=1;i<p;++i) pp[i]=pp[i-1]*n;
if(m<p){
gasit=0;
for(i=0;i<m;++i){
dif=c[max]-c[a[i]];
if(dif) {nr1=nr1*dif;gasit=1;}
}
if(gasit) nr+=nr1;
nr1=0;
for(i=0;i<p;++i){
dif=c[b[i]]-c[min];
if(dif) nr1=nr1+pp[p-i-1]*dif;
}
nr+=nr1;
}
if(m==p){
gasit=0;
nr1=1;
for(i=0;i<m;++i){
dif=c[b[i]]-c[a[i]];
if(dif>0) {nr1=nr1*dif;gasit=1;}
}
if(gasit) nr+=nr1;
}
printf("%d",nr);
return 0;
}