# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
948513 | GrandTiger1729 | Cubeword (CEOI19_cubeword) | C++17 | 1155 ms | 17756 KiB |
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
using namespace std;
namespace
{
const int N = 11, K = 128, MOD = 998244353;
int a[N][K][K]{};
long long res[K][K][K]{};
}
int main()
{
cin.tie(0)->sync_with_stdio(0);
int n;
cin >> n;
for (int i = 0; i < n; i++)
{
string s;
cin >> s;
string ss = s;
reverse(ss.begin(), ss.end());
if (s == ss)
{
a[s.size()][s[0]][ss[0]]++;
}
else
{
a[s.size()][s[0]][ss[0]]++;
a[s.size()][ss[0]][s[0]]++;
}
}
long long ans = 0;
for (int t = 3; t < N; t++)
{
fill_n(&res[0][0][0], sizeof(res) / sizeof(long long), 0);
for (int i = '0'; i <= 'z'; i++)
{
for (int j = '0'; j <= 'z'; j++)
{
for (int k = '0'; k <= 'z'; k++)
{
for (int l = '0'; l <= 'z'; l++)
{
(res[i][j][k] += 1ll * a[t][i][l] * a[t][j][l] * a[t][k][l]) %= MOD;
}
}
}
}
for (int i = '0'; i <= 'z'; i++)
{
for (int j = '0'; j <= 'z'; j++)
{
for (int k = '0'; k <= 'z'; k++)
{
for (int l = '0'; l <= 'z'; l++)
{
(ans += res[i][j][k] * res[i][j][l] % MOD * res[i][k][l] % MOD * res[j][k][l]) %= MOD;
}
}
}
}
}
cout << ans << '\n';
return 0;
}
Compilation message (stderr)
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |