Cod sursa(job #274154)

Utilizator runnaway90Oprescu Radu Constantin runnaway90 Data 9 martie 2009 14:43:06
Problema NextSeq Scor 95
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.04 kb
#include<stdio.h>
#include<algorithm>

using namespace std;

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

inline 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]);

	sort(a+1, a+n+1);
	for (i=1;i<=n;i++)
		nr[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]++;
			for (q=1;q<=b[0];q++) b[q]=0;
		}
		if (b[0]<c[0]);
		else
			if (b[0]>c[0]) break;
			else
			{
				i=1;
				while (b[i]==c[i]) i++;
				if (b[i]>=c[i]) break;

			}


	}
	printf("%d",j-1);

	return 0;
}