Submission #1245621

#TimeUsernameProblemLanguageResultExecution timeMemory
1245621abdelhakimCubeword (CEOI19_cubeword)C++20
0 / 100
1194 ms20936 KiB
#include <bits/stdc++.h> #define ll long long #define inf (ll)(1e15) #define mod (ll)998244353 #define dbg(x) cerr <<#x << ' ' << x <<endl; using namespace std; void printvec(vector<ll>& v) { for (auto &&i : v) { cout <<i<<' '; } cout << endl; } ll anss(ll i, ll n, string cur, vector<vector<ll>>& mp) { if(i==8) { ll ans=1; for (int j=0;j<7;j+=2) { ans*=mp[cur[j]-'a'][cur[j+1]-'a']; ans%=mod; } for (int j=0;j<2;j++) { ans*=mp[cur[j]-'a'][cur[j+2]-'a']; ans%=mod; } for (int j=4;j<6;j++) { ans*=mp[cur[j]-'a'][cur[j+2]-'a']; ans%=mod; } for (int j=0;j<4;j++) { ans*=mp[cur[j]-'a'][cur[j+4]-'a']; } return ans; } ll sm=0; for (char cr='a';cr<='f';cr++) { sm+=anss(i+1,n,cur+cr,mp); } sm%=mod; return sm; } int main() { ios::sync_with_stdio(0); cin.tie(0); ll n; cin>>n; vector<string> s(n); ll sz=0; for (int i=0;i<n;i++) { cin>>s[i]; sz=max(sz,(ll)s[i].size()); } vector<vector<string>> szs(11); map<string,bool> vis; // vector<string> s2; for (int i=0;i<n;i++) { if(vis[s[i]])continue; string rev=s[i]; reverse(rev.begin(),rev.end()); vis[rev]=1; vis[s[i]]=1; szs[s[i].size()].push_back(s[i]); } ll ans=0; for (int i=3;i<=10;i++) { if(szs[i].empty())continue; vector<vector<ll>> v(6,vector<ll>(6)); for (auto &&e : szs[i]) { string rev=e; reverse(rev.begin(),rev.end()); v[e[0]-'a'][e.back()-'a']++; if(rev!=e)v[e.back()-'a'][e[0]-'a']++; ans+=anss(0,n,"",v); } ans%=mod; } cout << ans << endl; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...