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...