Cod sursa(job #2851353)

Utilizator AndreiBadAndrei Badulescu AndreiBad Data 18 februarie 2022 14:48:18
Problema Lista lui Andrei Scor 5
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.11 kb
//
//  main.cpp
//  Lista lui Andrei (infoarena)
//
//  Created by Andrei Bădulescu on 18.02.22.
//

#include <iostream>
#include <fstream>

using namespace std;

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

const int MODULO = 104659;

bool posibilitati[27][27];

int main() {
    int n;
    in >> n;
    int k;
    in >> k;
    int v[27][n + 1];
    
    for (int i = 1; i <= k; i++) {
        char a, b;
        in >> a >> b;
        posibilitati[a - 'a' + 1][b - 'a' + 1] = 1;
        posibilitati[b - 'a' + 1][a - 'a' + 1] = 1;
    }
    
    for (int i = 1; i <= 26; i++) {
        v[i][1] = 1;
    }
    
    for (int cnt = 2; cnt <= n; cnt++) {
        for (int i = 1; i <= 26; i++) {
            int answer = 0;
            for (int k = 1; k <= 26; k++) {
                if (posibilitati[i][k] == 0) {
                    answer += v[k][cnt - 1];
                    answer %= MODULO;
                }
            }
            v[i][cnt] = answer;
        }
    }
    
    int sum = 0;
    
    for (int i = 1; i <= 26; i++) {
        sum += v[i][n - 1];
        sum %= MODULO;
    }
    
    out << sum;
    return 0;
}