Cod sursa(job #3329452)

Utilizator andrei1232008nicolae andrei andrei1232008 Data 13 decembrie 2025 11:10:11
Problema Subsir Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.02 kb
#include <bits/stdc++.h>

using namespace std;
ifstream fin("subsir.in");
ofstream fout("subsir.out");
string a,b;
const int mod=666013;
int i,j,n,m,len[510][510],l,cnt[510][510];
int main()
{
    fin>>a>>b;
    n=a.size();
    m=b.size();
    for(i=0;i<=n;i++)
        cnt[i][0]=1;
    for(j=0;j<=m;j++)
        cnt[0][j]=1;
    for(i=1;i<=n;i++)
    {
        for(j=1;j<=m;j++)
        {
            if(a[i-1]==b[j-1])
            {
                len[i][j]=len[i-1][j-1]+1;
                cnt[i][j]=cnt[i-1][j-1];
            }
            else
            {
                len[i][j]=max(len[i-1][j],len[i][j-1]);
                if(len[i-1][j]==len[i][j])
                    cnt[i][j]=(cnt[i][j]+cnt[i-1][j])%mod;
                if(len[i][j-1]==len[i][j])
                    cnt[i][j]=(cnt[i][j]+cnt[i][j-1])%mod;
                if(len[i-1][j-1]==len[i][j])
                    cnt[i][j]=(cnt[i][j]-cnt[i-1][j-1]+mod)%mod;
            }
        }
    }
    fout<<cnt[n][m]<<"\n";
    return 0;
}