제출 #1329464

#제출 시각아이디문제언어결과실행 시간메모리
1329464MuhammadSaramTrener (COCI20_trener)C++20
110 / 110
94 ms8232 KiB
#include <bits/stdc++.h>

using namespace std;

const int mod = 1e9 + 7;

int main()
{
	int n,k;
	cin>>n>>k;
	map<string,int> dp[n];
	for (int i=0;i<n;i++)
	{
		string s;
		for (int j=0;j<k;j++)
		{
			cin>>s;
			if (!i) dp[i][s]++;
			else
			{
				int x=0;
				string t=s.substr(0,i), t1=s.substr(1,i);
				if (dp[i-1].find(t)!=dp[i-1].end()) x=dp[i-1][t];
				if (t1!=t && dp[i-1].find(t1)!=dp[i-1].end()) x=(x+dp[i-1][t1])%mod;
				if (x) dp[i][s]=(dp[i][s]+x)%mod;
			}
		}
	}
	int ans=0;
	for (auto [s,i]:dp[n-1])
		ans=(ans+i)%mod;
	cout<<ans<<endl;

	return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...