Pagini recente » Cod sursa (job #1533199) | Cod sursa (job #895549) | Cod sursa (job #2722237) | Cod sursa (job #2770134) | Cod sursa (job #417684)
Cod sursa(job #417684)
#include<stdio.h>
#include<algorithm>
#define maxim(a,b) (a>b ? a : b)
using namespace std;
int v[10001],n;
int a[10001],na;
int b[10001],nb;
int f[10001],nr;
int cmp(const int& a,const int& b)
{
return (a<b);
}
void add ()
{
int i,t=0;
a[1]+=1;
t=a[1]/(n+1);
if(t)
a[1]=1;
for(i=2;t;i++)
{
a[i]+=1;
t=a[i]/(n+1);
if(t)
a[i]=1;
}
a[0]=maxim(i-1,a[0]);
}
int main ()
{
int i,st,dr,aux,poz;
freopen("nextseq.in","r",stdin);
freopen("nextseq.out","w",stdout);
scanf("%d%d%d",&n,&na,&nb);
for(i=1;i<=n;i++)
scanf("%d",&v[i]);
for(i=1;i<=na;i++)
scanf("%d",&a[i]);
for(i=1;i<=nb;i++)
scanf("%d",&b[i]);
sort(v+1,v+n+1,cmp);
for(i=1;i<=n;i++)
f[v[i]]=i;
for(i=1;i<=na;i++)
a[i]=f[a[i]];
for(i=1;i<=nb;i++)
b[i]=f[b[i]];
st=1;dr=na;
while(st<=dr)
{
aux=a[st];
a[st]=a[dr];
a[dr]=aux;
st++;
dr--;
}
st=1;dr=nb;
while(st<=dr)
{
aux=b[st];
b[st]=b[dr];
b[dr]=aux;
st++;
dr--;
}
poz=nb+1;
if(na==nb)
{
while(a[poz-1]==b[poz-1])
poz--;
}
a[0]=na;b[0]=nb;
while(1)
{
add();
if(a[0]<b[0])
{
nr++;
continue;
}
while(poz && a[poz-1]==b[poz-1])
poz--;
nr++;
if(!poz)
break;
}
printf("%d\n",nr-1);
return 0;
}