Cod sursa(job #365832)

Utilizator AndreiDDiaconeasa Andrei AndreiD Data 20 noiembrie 2009 00:30:20
Problema NextSeq Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.33 kb
#include <cstdio>
#include <cstring>
#include <algorithm>

using namespace std;

#define file_in "nextseq.in"
#define file_out "nextseq.out"

#define Nmax 10100

int n,m,p;
int i,j,e;
int x[Nmax],a[Nmax],b[Nmax],ind[Nmax],nrsol;

int main()
{
	freopen(file_in,"r",stdin);
	freopen(file_out,"w",stdout);
	
	scanf("%d %d %d", &n, &m, &p);
	
	for (i=1;i<=n;++i)
	{
		scanf("%d", &x[i]);
		ind[i]=i-1;
	}
	
	sort(x+1,x+n+1);
	
	for (i=1;i<=m;++i)
	{
		scanf("%d", &e);
		
		int ok=0;
		for (j=1;j<=n && !ok;++j)
			 if (e==x[j])
				 a[i]=ind[j],
				 ok=1;
	}
	
	/*for (i=1;i<=m;++i)
		 printf("%d ", a[i]);
	printf("\n");*/
	
	for (i=1;i<=p;++i)
	{
		scanf("%d", &e);
		
		int ok=0;
		for (j=1;j<=n && !ok;++j)
			 if (e==x[j])
				 b[i]=ind[j],
				 ok=1;
	}
	
	if (m==p)
		for (;;);
	
	/*for (i=1;i<=p;++i)
		 printf("%d ", b[i]);
	printf("\n");*/
	
	nrsol=0;
	
    if (m==p)
	{
		for (i=1;i<=m;++i)
			 nrsol+=b[i]-a[i];
		nrsol--;
		
		printf("%d\n", nrsol);
		
		return 0;
	}
 	
	if (m<p)
	{
		for (i=1;i<=m;++i)
			 nrsol+=n-1-a[i];
	}
	
	for (j=m+1;j<=p-1;++j)
	{
		int prod=1;
		for (i=1;i<=j;++i)
			 prod*=n;
		nrsol+=prod;
	}
		
	
	for (i=1;i<=p;++i)
			 nrsol+=n-1-b[i];
	
	printf("%d\n", nrsol);
	
	
	fclose(stdin);
	fclose(stdout);
	
	return 0;
	
}