Cod sursa(job #2256233)

Utilizator MihaelaCismaruMihaela Cismaru MihaelaCismaru Data 8 octombrie 2018 11:48:12
Problema Iv Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.17 kb
#include<fstream>
#include<cstring>
using namespace std;
ifstream in("iv.in");
ofstream out("iv.out");
int na,nb,mat[501][501],sol;
char a[501],b[501];
const int  mod = 3210121;
int main (void) {
    in >> a+1;
    in >> b+1;
    na=strlen (a+1);
    nb=strlen (b+1);
    mat[0][0] = 1;
    for (int i = 0; i <= na; i ++) {
        for (int j = 0; j <= nb; j ++) {
            for (int k = na+1; k >= 1; k --) {
                if (i == 0 && j == 0 && k == na+1) continue;
                int l = nb + 1 - (i+j-(na+1 - k));
                if ((i > 0 || j > 0) && (k < na+1 || l < nb+1) && (i<=k) && (j<=l)) {
                    if (a[i] == a[k] && i > 0 && (k < na+1 || l < nb+1)) {
                        mat[i][j] = (mat[i][j] + mat[i-1][j]) % mod;

                    }
                    if (b[j] == a[k] && j > 0 && (k < na+1 || l < nb+1)) {
                        mat[i][j] = (mat[i][j] + mat[i][j-1]) % mod;
                    }
                }
            }
        }
    }
    for (int i = 1; i <= na; i ++) {
        for (int j = 1; j <= nb; j ++) {
            sol = (sol + mat[i][j]) % mod;
        }
    }
    out << sol/2;

    return 0;
}