Pagini recente » Cod sursa (job #140538) | Cod sursa (job #2921656) | Cod sursa (job #2776205) | Cod sursa (job #1917039) | Cod sursa (job #11254)
Cod sursa(job #11254)
#include<stdio.h>
#include<algorithm>
using namespace std;
const int maxn = 10000;
typedef int lnum[10000];
lnum a,b;
lnum sol;
int i;
int j;
int n2;
int n;
int n1;
int x;
int ans;
int nr[maxn];
void scadere(lnum &dest,lnum &a,lnum &b)
{
int i;
int t=0;
for(i=1;i<=a[0];i++)
{
dest[i]=t;
t=0;
dest[i]=a[i]-b[i];
if (dest[i]<0)
{
t=-1;
dest[i]+=n+1;
}
}
dest[0]=a[0];
while(dest[dest[0]]==0) dest[0]--;
}
int main()
{
freopen("nextseq.in","r",stdin);
freopen("nextseq.out","w",stdout);
scanf("%d %d %d",&n,&n1,&n2);
for(i=1;i<=n;i++)
{
scanf("%d",&a[i]);
}
sort(a+1,a+n+1);
for(i=1;i<=n;i++)
{
nr[a[i]]=i;
}
memset(a,0,sizeof(a));
a[0]=n1;
for(i=1;i<=n1;i++)
{
scanf("%d",&x);
a[n1-i+1]=nr[x];
}
b[0]=n2;
for(i=1;i<=n2;i++)
{
scanf("%d",&x);
b[n2-i+1]=nr[x];
}
scadere(sol,a,b);
int p=1;
for(i=1;i<=sol[0];i++)
{
ans+=p*(sol[i]-1);
p*=n;
}
printf("%d",ans+1);
printf("\n");
return 0;
}