CCCPaste

Untitled

#include 
#include 
#include 
using namespace std;
int main()
{
    int N, m;
    cin >> N >> m;
     
    vector zabraneti(10);
    for(int i = 0; i < m; i++) {
        int x;
        cin >> x;
        zabraneti[x] = true;
    }
    queue q;
    vector visited(2000005, false);
     
    for(int i = 100; i <= 100000; i++) {
        int mozhe = 1;
        int broj_na_cifri = 0;
         
        for(int j = i; j > 0; j /= 10) {
            int cifra = j % 10;
            broj_na_cifri++;
            if(zabraneti[cifra]) {
                mozhe = 0;
            }
        }
        if(mozhe == 1) {
            q.push(i);
            q.push(broj_na_cifri);
            visited[i] = true;
        }
    }
     
    while(!q.empty()) {
        int broj = q.front();
        q.pop();
        int stiskanja = q.front();
        q.pop();
         
        if(broj == N) {
            cout << min(stiskanja, abs(N - 100)) << endl;
            return 0;
        }
        if(broj + 1 < 200000 and !visited[broj + 1]) {
            q.push(broj + 1);
            q.push(stiskanja + 1);
            visited[broj + 1] = true;
        }
        if(broj > 0 and !visited[broj - 1]) {
            q.push(broj - 1);
            q.push(stiskanja + 1);
            visited[broj - 1] = true;
        }
    }
    cout << abs(N - 100) << endl;
     
    return 0;
}