Submission #1303020

#TimeUsernameProblemLanguageResultExecution timeMemory
1303020MuhammadSaramCubeword (CEOI19_cubeword)C++20
100 / 100
765 ms7616 KiB
#include <bits/stdc++.h> using namespace std; const int C = 62, mod = 998244353; int w[C][C]; int cnt[C][C][C], ans=0; vector<string> v[11]; map<char,int> id; void add(int &x,int y) { x+=y; if (x>=mod) x-=mod; } void solve(int sz) { for (int i=0;i<C;i++) for (int j=0;j<C;j++) { w[i][j]=0; for (int k=0;k<C;k++) cnt[i][j][k]=0; } set<string> se; for (auto i:v[sz]) { se.insert(i); string s=i;reverse(s.begin(),s.end()); se.insert(s); } for (auto i:se) w[id[i[0]]][id[i[sz-1]]]++; for (int i=0;i<C;i++) for (int j=0;j<C;j++) for (int k=0;k<C;k++) for (int l=0;l<C;l++) add(cnt[i][j][k],1ll*w[i][l]*w[j][l]*w[k][l]%mod); for (int i=0;i<C;i++) for (int j=0;j<C;j++) for (int k=0;k<C;k++) for (int l=0;l<C;l++) add(ans,1ll*cnt[i][j][k]*cnt[i][k][l]%mod*cnt[i][j][l]%mod*cnt[j][k][l]%mod); } int main() { ios::sync_with_stdio(0); cin.tie(NULL), cout.tie(NULL); int x=0; for (char c='a';c<='z';c++) id[c]=x++; for (char c='A';c<='Z';c++) id[c]=x++; for (char c='0';c<='9';c++) id[c]=x++; int n; cin>>n; for (int i=0;i<n;i++) { string s; cin>>s; v[s.size()].push_back(s); } for (int i=3;i<=10;i++) if (v[i].size()) solve(i); cout<<ans<<endl; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...