#include <bits/stdc++.h>
#define int long long
using namespace std;
signed main() {
int n, k;
cin >> n >> k;
vector <vector <int>> dp(n + 1, vector <int>(k + 1, 0));
vector <vector <string>> inp(n + 1, vector <string>(k + 1));
for (int i = 1;i <= n;i++) {
for (int j = 1;j <= k;j++) {
cin >> inp[i][j];
}
}
for (int i = 1;i <= k;i++) {
dp[1][i] = 1;
}
for (int i = 2;i <= n;i++) {
map <string, int> cnt;
for (int j = 1;j <= k;j++) {
cnt[inp[i - 1][j]] += dp[i - 1][j];
}
for (int j = 1;j <= k;j++) {
string a = inp[i][j].substr(0, i - 1);
string b = inp[i][j].substr(1, i - 1);
if (a != b)
dp[i][j] = cnt[a] + cnt[b];
else
dp[i][j] = cnt[a];
}
}
int ans = 0;
for (int i = 1;i <= k;i++) {
ans += dp[n][i];
}
cout << ans << endl;
}
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |