Submission #238751

#TimeUsernameProblemLanguageResultExecution timeMemory
238751SalitoTrener (COCI20_trener)C++14
110 / 110
215 ms16568 KiB
#include<bits/stdc++.h> using namespace std; long long const mod = 1e9+7; unordered_map<string,pair<int,int> > h; long long dp[56][1505]; int n,k; int main() { int i,j; string s; cin>>n>>k; for(i=1;i<=k;i++) { cin>>s; dp[0][i] = 1; if(!h[s].first) h[s] = {i,1}; else h[s].second++; } for(i=1;i<n;i++) for(j=1;j<=k;j++) { cin>>s; string l,r; l = s.substr(0,s.size()-1); r = s.substr(1,s.size()-1); //cout<<l<<" "<<r<<endl; if(h[l].first) dp[i][j]=(dp[i][j]+dp[i-1][h[l].first]*h[l].second)%mod; if(h[r].first && l!=r) dp[i][j]=(dp[i][j]+dp[i-1][h[r].first]*h[r].second)%mod; if(!h[s].first) h[s] = {j,1}; else h[s].second++; } long long ans = 0; for(i=1;i<=k;i++) ans=(ans+dp[n-1][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...