Cod sursa(job #1599555)

Utilizator Athena99Anghel Anca Athena99 Data 13 februarie 2016 23:27:04
Problema NextSeq Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.32 kb
#include <algorithm>
#include <fstream>

using namespace std;

ifstream fin("nextseq.in");
ofstream fout("nextseq.out");

const int nmax= 10000;

int a[nmax+1], b[nmax+1], c[nmax+1], ind[nmax+1], f[nmax+1];

bool cmp( int x, int y ) {
    return a[x]<a[y];
}

bool check( int m ) {
    for ( int i= 1; i<=m; ++i ) {
        if ( b[i]<c[i] ) {
            return 1;
        }
    }
    return 0;
}

int main(  ) {
    int n, m, p;
    fin>>n>>m>>p;
    for ( int i= 1; i<=n; ++i ) {
        fin>>a[i];
        ind[i]= i;
    }

    sort( a+1, a+n+1 );
    sort( ind+1, ind+n+1, cmp );
    for ( int i= 1; i<=n; ++i ) {
        f[a[i]]= ind[i];
    }

    for ( int i= 1; i<=m; ++i ) {
        fin>>b[i];
        b[i]= f[b[i]];
    }

    for ( int i= 1; i<=p; ++i ) {
        fin>>c[i];
        c[i]= f[c[i]];
    }

    int sol= 0;
    while ( 1 ) {
        int ok= 0;
        for ( int i= m; i>=1 && ok==0; --i ) {
            if ( b[i]<n ) {
                ++b[i];
                ok= 1;
            } else {
                b[i]= 1;
            }
        }

        if ( ok==0 ) {
            ++m;
            b[m]= 1;
        }

        if ( m<p || check(m) ) {
            ++sol;
        } else {
            break;
        }
    }

    fout<<sol<<"\n";

    return 0;
}