Cod sursa(job #66277)

Utilizator crawlerPuni Andrei Paul crawler Data 17 iunie 2007 15:37:53
Problema NextSeq Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.26 kb
#include <cstdio>
#include <algorithm>

using namespace std;

#define Nmax 10100

int a[Nmax],b[Nmax],X[Nmax], norm[Nmax], BASE;

void sub(int A[],int B[])
{
	for (int i=1;i<=B[0];++i)
		if(A[i] - B[i] <= 0)
			A[i] -= B[i] - BASE, --A[i+1];
				else
			A[i] -= B[i];					
}	

int main()
{
	freopen("nextseq.in","r",stdin);
	freopen("nextseq.out","w",stdout);

	int n,tmp;

	scanf("%d%d%d",&n,&a[0],&b[0]);
	BASE = n;

	for (int i=0;i<n;++i)
		scanf("%d",X+i);
	
	sort(X,X+n);

	for (int i=0;i<n;++i)
		norm[X[i]] = i+1;
	
	/*//debug
	for (int i=0;i<n;++i)
		printf("%d ",X[i]);
	printf("\n");
	//end*/
	
	for (int i=a[0];i>0;--i)
	{
             scanf("%d",&tmp);
             a[i] = norm[tmp];
	}

	for (int i=b[0];i>0;--i)
	{
		scanf("%d",&tmp);
		b[i] = norm[tmp];
	}

	/*//debug
	for (int i=1;i<=a[0];++i)
		printf("%d ", a[i]);
	printf("\n");
	for (int i=1;i<=b[0];++i)
		printf("%d ", b[i]);
	printf("\n");
	//end*/	

	sub(b,a);

	/*
	for (int i=1;i<=b[0];++i)
		printf("%d ", b[i]);
	printf("\n");
	*/

	int ret = 0, poz=1;

	tmp = 1;

	while(tmp <= 89)
	{
		ret += b[poz]*tmp;
		tmp*=BASE;
		++poz;
	}	

	--ret;

	if(ret>=0)
		printf("%d\n",ret);
			else
		printf("0\n");

	return 0;
}