제출 #1329469

#제출 시각아이디문제언어결과실행 시간메모리
1329469Faisal_SaqibTrener (COCI20_trener)C++20
110 / 110
71 ms22164 KiB
#include <iostream>
#include <vector>
#include <algorithm>
#include <array>
#include <cmath>
#include <set>
#include <map>
#include <iomanip>
using namespace std;
typedef long long ll;
typedef long double ld;
#define int ll

const int N=55,K=1505;
int dp[N][K];
string s[N][K];
map<string,ll> dm[60];
int32_t main()
{
    ios::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
    ll mod=1e9+7;
    int n,k;
    cin>>n>>k;;
    ll tot=0;
    for(int i=1;i<=n;i++)
    {
        for(int j=1;j<=k;j++)
        {
            cin>>s[i][j];

            dp[i][j]=(i==1);
            dp[i][j]+=dm[i-1][s[i][j].substr(0,i-1)];
            if(s[i][j].substr(0,i-1)!=s[i][j].substr(1,i-1))
                dp[i][j]+=dm[i-1][s[i][j].substr(1,i-1)];

            dp[i][j]=(dp[i][j]%mod);
            if(i==n)tot=(tot+dp[i][j])%mod;
            int&x=dm[i][s[i][j]];
            x=(x+dp[i][j])%mod;
        }
    }
    cout<<tot<<endl;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...