Cod sursa(job #1024858)

Utilizator freak93Adrian Budau freak93 Data 9 noiembrie 2013 11:11:49
Problema NextSeq Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.03 kb
#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";
}