Submission #1303483

#TimeUsernameProblemLanguageResultExecution timeMemory
1303483orgiloogiiTrener (COCI20_trener)C++20
22 / 110
5 ms840 KiB
#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 timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...