Cod sursa(job #165382)

Utilizator runnaway90Oprescu Radu Constantin runnaway90 Data 25 martie 2008 21:55:56
Problema NextSeq Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.12 kb
#include<stdio.h>

int a[10003],b[10003],c[10003],nr[10003],n,m,p,i,r,j,q;

void qsort(int l,int r)
{int i,j,x,y;
	i=l;j=r;x=a[(l+r)/2];
	do
	{
		while (x>a[i]) i++;
		while (x<a[j]) j--;
		if (i<=j)
		{
			y=a[i];a[i]=a[j];a[j]=y;
			i++;j--;
		}
	}
	while (i<=j);
	if (i<r) qsort(i,r);
	if (j>l) qsort(l,j);
}

int verif()
{
	if (b[0]<c[0]) return 0;
	else
		if (b[0]>c[0]) return 1;
		else
		{
			i=1;
			while (b[i]==c[i]) i++;
			if (b[i]>=c[i]) return 1;
			else		return 0;

		}
}

int main()
{
	freopen("nextseq.in","r",stdin);
	freopen("nextseq.out","w",stdout);
	scanf("%d %d %d",&n,&m,&p);
	for (i=1;i<=n;i++)
		scanf("%d",&a[i]);
	qsort(1,n);
	for (i=1;i<=n;i++)
		b[a[i]]=i-1;

	for (i=1;i<=m;i++)
	{
		scanf("%d",&r);
		b[i]=nr[r];
	}
	for (i=1;i<=p;i++)
	{
		scanf("%d",&r);
		c[i]=nr[r];
	}
	b[0]=m;
	c[0]=p;
	for(j=1;;j++)
	{
		for (i=b[0];b[i]==n-1;i--);
		if (i!=0)
		{
			b[i]++;for (q=i+1;q<=b[0];q++) b[q]=0;
		}
		else
		{
			b[0]++;
			b[1]=0;
			for (q=2;q<=b[0];q++) b[q]=0;
		}
		if (verif())
			break;
	}
	printf("%d",j-1);

	return 0;
}