Pagini recente » Cod sursa (job #1510072) | Cod sursa (job #2074050) | Cod sursa (job #343336) | Cod sursa (job #1907648) | Cod sursa (job #1024858)
#include <iostream>
#include <fstream>
#include <vector>
#include <map>
#include <algorithm>
using namespace std;
int main() {
ifstream cin("nextseq.in");
ofstream cout("nextseq.out");
int N, M, P; cin >> N >> M >> P;
vector<int> X(N), A(M), B(P);
for (int i = 0; i < N; ++i)
cin >> X[i];
for (int i = 0; i < M; ++i)
cin >> A[i];
reverse(A.begin(), A.end());
for (int i = 0; i < P; ++i)
cin >> B[i];
reverse(B.begin(), B.end());
sort(X.begin(), X.end());
map<int, int> digit;
for (int i = 0; i < N; ++i)
digit[X[i]] = i + 1;
for (int i = 0; i < M; ++i)
A[i] = digit[A[i]];
for (int i = 0; i < P; ++i)
B[i] = digit[B[i]];
for (int i = 0; i < P; ++i) {
if (B[i] < A[i]) {
B[i] += N;
B[i + 1]--;
}
B[i] -= A[i];
}
int answer = 0;
int base = 1;
for (int i = 0; i < P; ++i) {
answer += base * B[i];
base *= N;
}
cout << max(0, answer - 1) << "\n";
}