Cod sursa(job #495075)

Utilizator ooctavTuchila Octavian ooctav Data 23 octombrie 2010 21:28:43
Problema NextSeq Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.09 kb
#include<cstdio>
#include<iostream>
#include<algorithm>
using namespace std;

const int NMAX = 10005;
const int MMAX = 10005;
const int PMAX = 10005;
const int VALMAX = 10005;

int N, M, P, REZ;
int X[NMAX], A[MMAX], B[PMAX], norm[VALMAX];

void normalizare()
{
	int c[NMAX];
	copy(X + 1, X + N + 1, c + 1);
	sort(c + 1, c + N + 1);
	for(int i = 1 ; i <= N ; i++)
		norm[c[i]] = i;
}


void citire()
{
	cin >> N >> M >> P;
	for(int i = 1 ; i <= N ; i++)
		scanf("%d", &X[i]);
	normalizare();
	
	int k;
	//fill(A + 1, A + MMAX + 1, -1);
	//fill(B + 1, B + PMAX + 1, -1);
	for(int i = M ; i ; i--)
	{
		scanf("%d", &k);
		A[i] = norm[k];
	}
	for(int i = P ; i ; i--)
	{
		scanf("%d", &k);
		B[i] = norm[k];
	}

}

void adauga(int poz)
{
	A[poz]++;
	if(A[poz] == N + 1)
	{
		A[poz] = 1;
		adauga(poz + 1);
	}
}

void scrie()
{
	printf("%d\n", REZ - 1);
}

int main()
{
	freopen("nextseq.in", "r", stdin);
	freopen("nextseq.out", "w", stdout);
	citire();
	for(; !equal(B + 1, B + P + 1, A + 1) ;)
	{
		adauga(1);
		REZ++;
	}
	scrie();
	return 0;
}