Submission #1303028

#TimeUsernameProblemLanguageResultExecution timeMemory
1303028Jawad_Akbar_JJCubeword (CEOI19_cubeword)C++20
21 / 100
1194 ms9840 KiB
#include <iostream> #include <vector> #include <algorithm> using namespace std; #define int long long int cnt[100][100], Num[65][65][65][65], cur, id[1000], mod = 998244353; vector<string> vec[50]; signed main(){ int n; cin>>n; for (int i=1;i<=n;i++){ string s; cin>>s; int k = s.size(); vec[k].push_back(s); reverse(begin(s), end(s)); vec[k].push_back(s); for (char c : s) if (id[c] == 0) id[c] = ++cur; } int Ans = 0; for (int i=3;i<=10;i++){ sort(begin(vec[i]), end(vec[i])); vec[i].resize(unique(begin(vec[i]), end(vec[i])) - begin(vec[i])); for (string s : vec[i]) cnt[id[s[0]]][id[s[i-1]]]++; for (int c1=1;c1<=cur;c1++){ for (int c2=1;c2<=cur;c2++){ for (int c3=1;c3<=cur;c3++){ for (int c4=1;c4<=cur;c4++) Num[c1][c2][c3][c4] = cnt[c1][c2] * cnt[c2][c3] % mod * cnt[c3][c4] % mod * cnt[c4][c1] % mod; } } } for (int c1=1;c1<=cur;c1++){ for (int c2=1;c2<=cur;c2++){ for (int c3=1;c3<=cur;c3++){ for (int c4=1;c4<=cur;c4++){ for (int c5=1;c5<=cur;c5++){ for (int c6=1;c6<=cur;c6++){ for (int c7=1;c7<=cur;c7++){ for (int c8=1;c8<=cur;c8++) Ans += Num[c1][c2][c3][c4] * Num[c5][c6][c7][c8] % mod * cnt[c1][c5] % mod * cnt[c2][c6] % mod * cnt[c3][c7] % mod * cnt[c4][c8] % mod; } } } } } } } for (string s : vec[i]) cnt[id[s[0]]][id[s[i-1]]] = 0; } cout<<Ans % mod<<'\n'; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...