Cod sursa(job #998433)

Utilizator poptibiPop Tiberiu poptibi Data 16 septembrie 2013 23:30:51
Problema NextSeq Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.11 kb
#include <cstdio>
#include <cstdlib>
#include <algorithm>
using namespace std;

const int NMAX = 10010;

int A[NMAX], B[NMAX], X[NMAX], C[NMAX], N, M, P, Ans;

bool Equal(int A[NMAX], int B[NMAX])
{
    if(A[0] != B[0]) return 0;
    for(int i = 1; i <= A[0]; ++ i)
        if(A[i] != B[i])
            return 0;
    return 1;
}

int main()
{
    freopen("nextseq.in", "r", stdin);
    freopen("nextseq.out", "w", stdout);

    scanf("%i %i %i", &N, &M, &P);

    for(int i = 1; i <= N; ++ i) scanf("%i", &X[i]);
    sort(X + 1, X + N + 1);
    for(int i = 1; i <= N; ++ i) C[X[i]] = i;

    for(int i = M; i > 0; -- i)
        scanf("%i", &A[i]), A[i] = C[A[i]];
    for(int i = P; i > 0; -- i)
        scanf("%i", &B[i]), B[i] = C[B[i]];

    A[0] = M;
    B[0] = P;

    while(!Equal(A, B))
    {
        A[1] ++;
        for(int i = 1; i <= A[0]; ++ i)
            if(A[i] == N + 1)
            {
                A[i + 1] ++;
                A[i] = 1;
                if(i == A[0]) A[0] ++;
            }

        Ans ++;
    }

    printf("%i\n", Ans - 1);

    return 0;
}