Cod sursa(job #1795256)

Utilizator eu3neuomManghiuc Teodor-Florin eu3neuom Data 2 noiembrie 2016 09:44:11
Problema NextSeq Scor 15
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.17 kb
#include <bits/stdc++.h>

using namespace std;

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

const int NMax = 10050;

bool digit[10];
int A[NMax];
int B[NMax];

inline bool Smaller() {

    if(A[0] < B[0]) return true;

    for(int i = A[0]; i > 0; i--) {
        if(A[i] < B[i]) return true;
        if(A[i] > B[i]) return false;
    }

    return false;
}

inline void Increment() {

    int i, t = 0;
    A[1] += 1;
    for(i = 1; i <= A[0] || t; i++, t /= 10) {
        A[i] = (t += A[i]) % 10;
    }
    A[0] = i - 1;
}

inline bool Ok() {

    for(int i = 1; i <= A[0]; i++) if(digit[A[i]] == false) return false;

    return true;
}

int main() {

    ios::sync_with_stdio();
    fin.tie(NULL);

    int n, m, p;
    fin >> n >> m >> p;

    for(int i = 1; i <= n; i++) {
        int x;
        fin >> x;

        digit[x] = true;
    }

    for(int i = m; i > 0; i--) fin >> A[i];
    for(int i = p; i > 0; i--) fin >> B[i];

    A[0] = m; B[0] = p;

    int ans = 0;

    Increment();
    while(Smaller()) {

        if(Ok()) ans++;
        Increment();

    }

    fout << ans;

    return 0;
}