Cod sursa(job #2279274)

Utilizator mihailrazMihail Turcan mihailraz Data 9 noiembrie 2018 11:50:12
Problema Iv Scor 20
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.01 kb
#include <fstream>
#include <string.h>
#define LMAX 500
#define MOD 3210121

using namespace std;
ifstream fi("iv.in");
ofstream fo("iv.out");
char C1[LMAX+5], C2[LMAX+5];
int n, m;

long long solve(int le, int ri, int le1, int ri1, int le2, int ri2)
{
    int rez=0;
    if(le>ri)
        return 1;
    if(C1[le1]==C1[ri1])
    {
        if(le1<ri1 || le2>ri2)
            rez=(rez+solve(le+1, ri-1, le1+1, ri1-1, le2, ri2))%MOD;
    }
    if(le1<=ri1 && le2<=ri2)
    {
        if(C1[le1]==C2[ri2])
            rez=(rez+solve(le+1, ri-1, le1+1, ri1, le2, ri2-1))%MOD;
        if(C2[le2]==C1[ri1])
            rez=(rez+solve(le+1, ri-1, le1, ri1-1, le2+1, ri2))%MOD;
    }
    if(C2[le2]==C2[ri2])
    {
        if(le2<ri2 || le1>ri1)
            rez=(rez+solve(le+1, ri-1, le1, ri1, le2+1, ri2-1))%MOD;
    }
    return rez;
}

int main()
{
    fi>>C1+1>>C2+1;
    n=strlen(C1+1);
    m=strlen(C2+1);
    fo<<solve(1, n+m, 1, n, 1, m);
    fi.close();
    fo.close();
    return 0;
}