Cod sursa(job #861102)

Utilizator stoicatheoFlirk Navok stoicatheo Data 20 ianuarie 2013 23:08:15
Problema NextSeq Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.25 kb
#include<cstdio>
#include<iostream>
#include<algorithm>
using namespace std;
 
const int NMAX = 10005;
const int MMAX = 10005;
const int PMAX = 10005;
const int VALMAX = 10005;
 
int N, M, P, REZ;
int X[NMAX], A[MMAX], B[PMAX], norm[VALMAX];
 
void normalizare()
{
    int c[NMAX];
    copy(X + 1, X + N + 1, c + 1);
    sort(c + 1, c + N + 1);
    for(int i = 1 ; i <= N ; i++)
        norm[c[i]] = i;
}
 
 
void citire()
{
    cin >> N >> M >> P;
    for(int i = 1 ; i <= N ; i++)
        scanf("%d", &X[i]);
    normalizare();
     
    int k;
    //fill(A + 1, A + MMAX + 1, -1);
    //fill(B + 1, B + PMAX + 1, -1);
    for(int i = M ; i ; i--)
    {
        scanf("%d", &k);
        A[i] = norm[k];
    }
    for(int i = P ; i ; i--)
    {
        scanf("%d", &k);
        B[i] = norm[k];
    }
 
}
 
void adauga(int poz)
{
    A[poz]++;
    if(A[poz] == N + 1)
    {
        A[poz] = 1;
        adauga(poz + 1);
    }
}
 
void scrie()
{
    printf("%d\n", REZ - 1);
}
 
int main()
{
    freopen("nextseq.in", "r", stdin);
    freopen("nextseq.out", "w", stdout);
    citire();
    for(; !equal(B + 1, B + P + 1, A + 1) ;)
    {
        adauga(1);
        REZ++;
    }
    scrie();
    return 0;
}