Cod sursa(job #1319781)

Utilizator yololy97Olaru Bogdan-Ioan yololy97 Data 17 ianuarie 2015 13:29:21
Problema NextSeq Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.84 kb
#include <cstdio>
#include <algorithm>
using namespace std;
int v[10001], X[10001], A[10001], B[10001], n, m, p;
void sub(int A[], int B[]){
	int t = 0;
	for(int i = 1; i <= A[0]; i++) {
		A[i] -= ((i <= B[0]) ? B[i] : 0) + t;
		A[i] += (t = A[i] < 0) * n;
	}
	for (; A[0] > 1 && !A[A[0]]; A[0]--);
}
int main(){
	freopen("nextseq.in", "r", stdin);
	freopen("nextseq.out", "w", stdout);
	scanf("%d %d %d ", &n, &m, &p);
	for(int i = 1; i <= n; ++i)
		scanf("%d ", &v[i]);
	sort(v + 1, v + n + 1);
	for(int i = 1; i <= n; ++i)
		X[v[i]] = i;
	for(int i = m; i > 0; --i){
		int x;
		scanf("%d ", &x);
		A[i] = X[x];
	}
	A[0] = m;
	for(int i = p; i > 0; --i){
		int x;
		scanf("%d ", &x);
		B[i] = X[x];
	}
	B[0] = p;
	sub(B, A);
	int res = 0, power = 1;
	for(int i = 1; i <= B[0]; ++i) {
		res = res + B[i] * power;
		power *= n;
	}
	printf ("%d\n", res - 1);
}