Submission #1329471

#TimeUsernameProblemLanguageResultExecution timeMemory
1329471Muhammad_AneeqTrener (COCI20_trener)C++20
55 / 110
2092 ms5700 KiB
#include <bits/stdc++.h>
using namespace std;
int mod=1e9+7;
bool mt(string a,string b)
{
    bool w=1;
    for (int i=0;i<a.size();i++)
    {
        if (a[i]==b[i]) continue;
        w=0;
        break;
    }
    if (w)
        return w;
    w=1;
    for (int i=0;i<a.size();i++)
    {
        if (a[i]==b[i+1]) continue;
        w=0;
        break;
    }
    return w;
}
inline void solve()
{
    int n,k;
    cin>>n>>k;
    string a[n][k];
    for (int i=0;i<n;i++)
        for (int j=0;j<k;j++)
            cin>>a[i][j];
    int dp[n][k]={};
    for (int i=0;i<k;i++)
        dp[0][i]=1;
    for (int i=0;i+1<n;i++)
    {
        for (int j=0;j<k;j++)
        {
            for (int l=0;l<k;l++)
            {
                if (mt(a[i][j],a[i+1][l]))
                {
                    // cout<<i<<' '<<j<<' '<<l<<endl;
                    dp[i+1][l]+=dp[i][j];
                    if (dp[i+1][l]>=mod)
                        dp[i+1][l]-=mod;
                }
            }
        }
    }
    int ans=0;
    for (int i=0;i<k;i++)
    {
        ans+=dp[n-1][i];
        if (ans>=mod)
            ans-=mod;
    }
    cout<<ans<<endl;
}
int main()
{
    ios_base::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL);
    int t=1;
    for (int i=1;i<=t;i++)
    {
        solve();
    }
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...