Cod sursa(job #2006082)

Utilizator pepsiM4A1Ozturk Arif pepsiM4A1 Data 28 iulie 2017 18:36:26
Problema NextSeq Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.01 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);
}