Cod sursa(job #51007)

Utilizator slayer4uVictor Popescu slayer4u Data 9 aprilie 2007 17:51:00
Problema NextSeq Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.03 kb
#include<stdio.h>
#include<algorithm>
using namespace std;
int n,m,p,num,a[10001],b[10001],x[10001],i,j,one[10001];
void add(int a[], int b[])
{
	int i,t=0;
	for (i=1;i<=a[0] || i<=b[0] || t;i++,t/=n)
		a[i]=(t+=a[i]+b[i])%n;
	a[0]=i-1;
}
int compare(int a[], int b[])
{
	if (a[0]!=b[0]) return 1;
	for (int i=a[0];i>=1;i--)
		if (a[0]!=b[0]) return 1;
	return 0;
}
int cautbin(int st,int dr,int o)
{
	int m=(st+dr)/2;
	if (x[m]==o)
		return m;
	else
	if (x[m]<o)
		cautbin(m+1,dr,o);
	else
		cautbin(st,m,o);
}
int main()
{
	freopen ("nextseq.in","rt",stdin);
	freopen ("nextseq.out","wt",stdout);

	scanf("%d %d %d",&n,&m,&p);

	for (i=1;i<=n;i++)
		scanf("%d",&x[i]);

	for (i=1;i<=m;i++) scanf("%d",&a[i]);
	for (i=1;i<=p;i++) scanf("%d",&b[i]);


	sort(x+1,x+n+1);

	a[0]=m;
	for (i=1;i<=m;i++)
		a[i]=cautbin(1,n,a[i])-1;

	b[0]=p;
	for (i=1;i<=p;i++)
		b[i]=cautbin(1,n,b[i])-1;

	one[0]=one[1]=num=1;
	while (compare(b,a)!=0)
		add(a,one),num++;

	printf("%d\n",num-2);
	return 0;
}