Cod sursa(job #396784)

Utilizator loginLogin Iustin Anca login Data 15 februarie 2010 21:07:26
Problema NextSeq Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.07 kb
# include <fstream>
using namespace std;
int x[10003], n, m, p, a[10003], b[10003], v[10003], sol;

void qsort (int st, int dr)
{
	if (st<dr)
	{
		int i=st, j=dr, d=0, aux;
		while (i<j)
		{
			if (x[i]>x[j])
			{
				aux=x[i];x[i]=x[j];x[j]=aux;
				d=1-d;
			}
			i+=d;
			j-=1-d;
		}
		qsort (st, i-1);
		qsort (i+1, dr);
	}
}

void read ()
{
	int q;
	ifstream fin ("nextseq.in");
	fin>>n>>m>>p;
	for (int i=1;i<=n;i++)
		fin>>x[i];
	qsort(1, n);
	for (int i=1;i<=n;i++)
		v[x[i]]=i;
	for (int i=m;i;--i)
		fin>>q, a[i]=v[q];
	for (int i=p;i;--i)
		fin>>q, b[i]=v[q];
}


void creste (int p)
{
	if (p==m+1)
		a[++m]=1;
	else
	{
		if (a[p]==n)
		{
			a[p]=1;
			creste (p+1);
		}
		else
			a[p]++;
	}
}

int cmp ()
{
	if (m<p)
		return 1;
	for (int i=m;i;--i)
		if (b[i]>a[i])
			return 1;
	return 0;
}

void solve ()
{
	int gata=0;
	while (!gata)
	{
		creste (1);
		if (cmp())
			sol++;
		else
			gata=1;
	}
}

int main ()
{
	read();
	solve ();
	ofstream fout ("nextseq.out");
	fout<<sol;
	return 0;
}