Submission #1266913

#TimeUsernameProblemLanguageResultExecution timeMemory
1266913herreinsteinTrener (COCI20_trener)C++20
110 / 110
124 ms21832 KiB
#include <bits/stdc++.h>
#define int long long int
#define ff first
#define ss second
const int MOD = 1e9+7;
const int N = 2e5 + 5;
using namespace std;
map<string, int> mp;
void solve(){
    int n, k;
    cin >> n >> k;
    string s[n*k];
    for(int i = 0; i < n*k; i++) cin >> s[i];
    for(int i = 0; i < k; i++) mp[s[i]]++;
    for(int i = k; i < n*k-k; i++){
        string s1 = s[i].substr(0, s[i].size()-1);
        string s2 = s[i].substr(1, s[i].size()-1);
        if(s1 != s2){
            mp[s[i]] += (mp[s1] + mp[s2]) % MOD;
            mp[s[i]] %= MOD;
        }
        else{
            mp[s[i]] += (mp[s1] % MOD);
            mp[s[i]] %= MOD;
        }
        // cout << s[i] << " " << mp[s[i]] << endl;
    }   
    int ans = 0;
    for(int i = n*k-k; i < n*k; i++){
        string s1 = s[i].substr(0, s[i].size()-1);
        string s2 = s[i].substr(1, s[i].size()-1);
        if(s1 != s2) ans += (mp[s1] + mp[s2]) % MOD, ans %= MOD;
        else ans += mp[s1], ans %= MOD;
    }
    cout << ans << endl;
}
int32_t main(){
    
    int t;
    // cin >> t;
    t = 1;
    while(t--) solve();
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...