Cod sursa(job #3142200)

Utilizator SSKMFSS KMF SSKMF Data 20 iulie 2023 09:10:49
Problema Lista lui Andrei Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.12 kb
#include <fstream>
using namespace std;

ifstream cin ("nrcuv.in");
ofstream cout ("nrcuv.out");

int modalitati[2][26] , mod = 104659;
bool exclus[26][26];

int main ()
{
    int lungime , perechi;
    cin >> lungime >> perechi;

    for (char litere[2] ; perechi ; perechi--)
        cin >> litere[0] >> litere[1] , exclus[litere[0] - 'a'][litere[1] - 'a'] = exclus[litere[1] - 'a'][litere[0] - 'a'] = true;

    for (int litera = 0 ; litera < 26 ; litera++)
        modalitati[0][litera] = 1;

    for (int lungime_actuala = 2 ; lungime_actuala <= lungime ; lungime_actuala++) {
        for (int litera_1 = 0 ; litera_1 < 26 ; litera_1++) {
            modalitati[1][litera_1] = 0;
            for (int litera_2 = 0 ; litera_2 < 26 ; litera_2++)
                if (!exclus[litera_1][litera_2]) (modalitati[1][litera_1] += modalitati[0][litera_2]) %= mod;
        }

        swap(modalitati[0] , modalitati[1]);
    }

    int total = 0;
    for (int litera = 0 ; litera < 26 ; litera++)
        (total += modalitati[0][litera]) %= mod;

    cout << total;
    cout.close(); cin.close();
    return 0;
}