Cod sursa(job #505529)

Utilizator alex_mircescuAlex Mircescu alex_mircescu Data 2 decembrie 2010 20:06:44
Problema NextSeq Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.89 kb
#include <stdio.h>
#include <algorithm>

using namespace std;

long x[10010], n, m, p, a[10010], b[10010], v[10010], sol, i, temp, q;

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

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

int main () {
	freopen("nextseq.in", "r", stdin);
	freopen("nextseq.out", "w", stdout);
	scanf("%ld%ld%ld", &n, &m, &p);
	for (i = 1; i <= n; ++i) {
		scanf("%ld", &x[i]);
	}
	sort(x + 1, x + 1 + n);
	for (i = 1; i <= n; ++i) {
		v[x[i]] = i;
	}
	for (i = m; i ; --i) {
		scanf("%ld", &q);
		a[i] = v[q];
	}
	for (i = p; i ; --i) {
		scanf("%ld", &q);
		b[i] = v[q];
	}
	
	while (!temp) {
		add(1);
		if (cmp()) {
			++sol;
		} else {
			temp = 1;
		}
	}	
	printf("%ld\n", sol);
	return 0;
}