Pagini recente » Cod sursa (job #1975124) | Cod sursa (job #695323) | Cod sursa (job #3234262) | Cod sursa (job #2382035) | Cod sursa (job #490181)
Cod sursa(job #490181)
#include<cstdio>
#include<algorithm>
using namespace std;
int zeroinit,cif,nr,n,m,p,v[1<<14],a[1<<14],b[1<<14],cor[1<<14];
void read()
{
freopen("nextseq.in","r",stdin);
freopen("nextseq.out","w",stdout);
scanf("%d%d%d",&n,&m,&p);
for(int i=1;i<=n;i++)
scanf("%d",&v[i]);
for(int i=1;i<=m;i++)
scanf("%d",&a[i]);
for(int i=1;i<=p;i++)
scanf("%d",&b[i]);
}
void norm()
{
sort(v+1,v+n+1);
zeroinit=true;
if(v[1]!=0)
cor[0]=++cif,zeroinit=false;
v[0]=-1;
for(int i=1;i<=n;i++)
if(v[i]!=v[i-1])
cor[v[i]]=++cif;
for(int i=1;i<=m;i++)
a[i]=cor[a[i]];
for(int i=1;i<=p;i++)
b[i]=cor[b[i]];
}
void egal()
{
while(m<p)
{
++m;
for(int i=m;i>=1;i--)
a[i]=a[i-1];
a[1]=cor[0];
}
}
bool comp()
{
for(int i=1;i<=m;i++)
if(a[i]<b[i])
return true;
else if(a[i]>b[i])
return false;
return false;
}
void next()
{
bool ok=false;
int poz=m;
while(!ok)
{
for(int i=a[poz]+1;i<=cif && !ok;i++)
a[poz]=i, ok=true;
if(!ok)
{
if(zeroinit==true)
a[poz]=1;
else
a[poz]=2;
poz--;
}
}
}
int main()
{
read();
norm();
egal();
while(comp())
{
next();
nr++;
}
printf("%d",nr-1);
return 0;
}