Cod sursa(job #3249678)

Utilizator Dia3141Costea Diana Stefania Dia3141 Data 17 octombrie 2024 16:07:34
Problema Subsir Scor 60
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.97 kb
#include <fstream>
#include <cstring>
#define mod 666013
using namespace std;
ifstream cin("subsir.in");
ofstream cout("subsir.out");
int n,m,dp[505][505],sol[505][505];
char a[505],b[505];
int main()
{
    cin>>a>>b;
    n=strlen(a);
    m=strlen(b);
    for(int i=1;i<=n;i++)
        for(int j=1;j<=m;j++){
            if(a[i-1]==b[j-1]){
                dp[i][j]=dp[i-1][j-1]+1,sol[i][j]=max(1,sol[i-1][j-1]);
            }else{
                if(dp[i-1][j]==dp[i][j-1]){
                    dp[i][j]=dp[i-1][j];
                    sol[i][j]=sol[i-1][j]+sol[i][j-1];
                    if(dp[i-1][j]==dp[i-1][j-1])
                        sol[i][j]-=sol[i-1][j-1];
                    sol[i][j]%=mod;
                }else if(dp[i-1][j]>dp[i][j-1])
                    dp[i][j]=dp[i-1][j],sol[i][j]=sol[i-1][j];
                else
                    dp[i][j]=dp[i][j-1],sol[i][j]=sol[i][j-1];
            }
        }
    cout<<sol[n][m];
    return 0;
}