제출 #914036

#제출 시각아이디문제언어결과실행 시간메모리
914036CyberCowCubeword (CEOI19_cubeword)C++17
100 / 100
469 ms35420 KiB
#include <random> #include <algorithm> #include <bitset> #include <chrono> #include <cmath> #include <deque> #include <fstream> #include <iomanip> #include <iostream> #include <iterator> #include <map> #include <queue> #include <set> #include <stack> #include <string> #include <unordered_map> #include <unordered_set> #include <vector> #include <chrono> #define fr first #define sc second #define ad push_back using namespace std; using ll = long long; mt19937 rnd(348502); const ll N = 150; ll a[15][N][N]; vector<char> per; ll chgl[N][N][N]; ll mod = 998244353; void solve() { int n, i, j, x, y; cin >> n; string s; set<string> sss; for (i = 0; i < n; i++) { cin >> s; int st = 1; for (j = 0; j < s.size(); j++) { if (s[j] != s[s.size() - j - 1]) st = 0; } if (st) { if (sss.find(s) == sss.end()) a[s.size()][s[0]][s.back()]++; sss.insert(s); } else { if (sss.find(s) == sss.end()) a[s.size()][s[0]][s.back()]++; sss.insert(s); reverse(s.begin(), s.end()); if (sss.find(s) == sss.end()) a[s.size()][s[0]][s.back()]++; sss.insert(s); } } for (i = 'a'; i <= 'z'; i++) { per.push_back(char(i)); per.push_back(char(i - 'a' + 'A')); } for ( i = 0; i < 10; i++) { per.push_back(char('0' + i)); } ll anss = 0; for (int ch = 3; ch <= 10; ch++) { for (j = 0; j < per.size(); j++) { for (int h = j; h < per.size(); h++) { for (int hh = h; hh < per.size(); hh++) { ll obshi = 0; for (i = 0; i < per.size(); i++) { ll qan = ((a[ch][per[i]][per[j]] * a[ch][per[i]][per[h]]) % mod * a[ch][per[i]][per[hh]]) % mod; obshi += qan; if (obshi >= mod) obshi %= mod; } chgl[per[j]][per[h]][per[hh]] += obshi; if (chgl[per[j]][per[h]][per[hh]] >= mod) chgl[per[j]][per[h]][per[hh]] %= mod; } } } for (j = 0; j < per.size(); j++) { for (int h = j; h < per.size(); h++) { for (int hh = h; hh < per.size(); hh++) { for (int glx = hh; glx < per.size(); glx++) { if (j == h) { if (h == hh) { if (hh == glx) { anss = (anss + ((chgl[per[j]][per[h]][per[hh]] * chgl[per[j]][per[h]][per[glx]]) % mod * chgl[per[h]][per[hh]][per[glx]]) % mod * chgl[per[j]][per[hh]][per[glx]]) % mod;// } else { anss = (anss + ((chgl[per[j]][per[h]][per[hh]] * chgl[per[j]][per[h]][per[glx]]) % mod * chgl[per[h]][per[hh]][per[glx]]) % mod * chgl[per[j]][per[hh]][per[glx]] % mod * 4) % mod; } } else { if (hh == glx) { anss = (anss + ((chgl[per[j]][per[h]][per[hh]] * chgl[per[j]][per[h]][per[glx]]) % mod * chgl[per[h]][per[hh]][per[glx]]) % mod * chgl[per[j]][per[hh]][per[glx]] % mod * 6) % mod; } else { anss = (anss + ((chgl[per[j]][per[h]][per[hh]] * chgl[per[j]][per[h]][per[glx]]) % mod * chgl[per[h]][per[hh]][per[glx]]) % mod * chgl[per[j]][per[hh]][per[glx]] % mod * 12) % mod; } } } else { if (h == hh) { if (hh == glx) { anss = (anss + ((chgl[per[j]][per[h]][per[hh]] * chgl[per[j]][per[h]][per[glx]]) % mod * chgl[per[h]][per[hh]][per[glx]]) % mod * chgl[per[j]][per[hh]][per[glx]] % mod * 4) % mod; } else { anss = (anss + ((chgl[per[j]][per[h]][per[hh]] * chgl[per[j]][per[h]][per[glx]]) % mod * chgl[per[h]][per[hh]][per[glx]]) % mod * chgl[per[j]][per[hh]][per[glx]] % mod * 12) % mod; } } else { if (hh == glx) { anss = (anss + ((chgl[per[j]][per[h]][per[hh]] * chgl[per[j]][per[h]][per[glx]]) % mod * chgl[per[h]][per[hh]][per[glx]]) % mod * chgl[per[j]][per[hh]][per[glx]] % mod * 12) % mod; } else { anss = (anss + ((chgl[per[j]][per[h]][per[hh]] * chgl[per[j]][per[h]][per[glx]]) % mod * chgl[per[h]][per[hh]][per[glx]]) % mod * chgl[per[j]][per[hh]][per[glx]] % mod * 24) % mod; } } } if (anss >= mod) anss %= mod; } } } } for (j = 0; j < per.size(); j++) { for (int h = j; h < per.size(); h++) { for (int hh = h; hh < per.size(); hh++) { chgl[per[j]][per[h]][per[hh]] = 0; } } } } cout << anss; } int main() { ios_base::sync_with_stdio(false); cin.tie(0); ll tt = 1; //cin >> tt; while (tt--) { solve(); } return 0; }

컴파일 시 표준 에러 (stderr) 메시지

cubeword.cpp: In function 'void solve()':
cubeword.cpp:46:23: warning: comparison of integer expressions of different signedness: 'int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   46 |         for (j = 0; j < s.size(); j++)
      |                     ~~^~~~~~~~~~
cubeword.cpp:54:33: warning: array subscript has type 'char' [-Wchar-subscripts]
   54 |                 a[s.size()][s[0]][s.back()]++;
      |                                 ^
cubeword.cpp:54:41: warning: array subscript has type 'char' [-Wchar-subscripts]
   54 |                 a[s.size()][s[0]][s.back()]++;
      |                                   ~~~~~~^~
cubeword.cpp:60:33: warning: array subscript has type 'char' [-Wchar-subscripts]
   60 |                 a[s.size()][s[0]][s.back()]++;
      |                                 ^
cubeword.cpp:60:41: warning: array subscript has type 'char' [-Wchar-subscripts]
   60 |                 a[s.size()][s[0]][s.back()]++;
      |                                   ~~~~~~^~
cubeword.cpp:64:33: warning: array subscript has type 'char' [-Wchar-subscripts]
   64 |                 a[s.size()][s[0]][s.back()]++;
      |                                 ^
cubeword.cpp:64:41: warning: array subscript has type 'char' [-Wchar-subscripts]
   64 |                 a[s.size()][s[0]][s.back()]++;
      |                                   ~~~~~~^~
cubeword.cpp:80:23: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   80 |         for (j = 0; j < per.size(); j++)
      |                     ~~^~~~~~~~~~~~
cubeword.cpp:82:31: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   82 |             for (int h = j; h < per.size(); h++)
      |                             ~~^~~~~~~~~~~~
cubeword.cpp:84:37: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   84 |                 for (int hh = h; hh < per.size(); hh++)
      |                                  ~~~^~~~~~~~~~~~
cubeword.cpp:87:35: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   87 |                     for (i = 0; i < per.size(); i++)
      |                                 ~~^~~~~~~~~~~~
cubeword.cpp:89:48: warning: array subscript has type 'char' [-Wchar-subscripts]
   89 |                         ll qan = ((a[ch][per[i]][per[j]] * a[ch][per[i]][per[h]]) % mod * a[ch][per[i]][per[hh]]) % mod;
      |                                                ^
cubeword.cpp:89:56: warning: array subscript has type 'char' [-Wchar-subscripts]
   89 |                         ll qan = ((a[ch][per[i]][per[j]] * a[ch][per[i]][per[h]]) % mod * a[ch][per[i]][per[hh]]) % mod;
      |                                                        ^
cubeword.cpp:89:72: warning: array subscript has type 'char' [-Wchar-subscripts]
   89 |                         ll qan = ((a[ch][per[i]][per[j]] * a[ch][per[i]][per[h]]) % mod * a[ch][per[i]][per[hh]]) % mod;
      |                                                                        ^
cubeword.cpp:89:80: warning: array subscript has type 'char' [-Wchar-subscripts]
   89 |                         ll qan = ((a[ch][per[i]][per[j]] * a[ch][per[i]][per[h]]) % mod * a[ch][per[i]][per[hh]]) % mod;
      |                                                                                ^
cubeword.cpp:89:103: warning: array subscript has type 'char' [-Wchar-subscripts]
   89 |                         ll qan = ((a[ch][per[i]][per[j]] * a[ch][per[i]][per[h]]) % mod * a[ch][per[i]][per[hh]]) % mod;
      |                                                                                                       ^
cubeword.cpp:89:112: warning: array subscript has type 'char' [-Wchar-subscripts]
   89 |                         ll qan = ((a[ch][per[i]][per[j]] * a[ch][per[i]][per[h]]) % mod * a[ch][per[i]][per[hh]]) % mod;
      |                                                                                                                ^
cubeword.cpp:94:32: warning: array subscript has type 'char' [-Wchar-subscripts]
   94 |                     chgl[per[j]][per[h]][per[hh]] += obshi;
      |                                ^
cubeword.cpp:94:40: warning: array subscript has type 'char' [-Wchar-subscripts]
   94 |                     chgl[per[j]][per[h]][per[hh]] += obshi;
      |                                        ^
cubeword.cpp:94:49: warning: array subscript has type 'char' [-Wchar-subscripts]
   94 |                     chgl[per[j]][per[h]][per[hh]] += obshi;
      |                                                 ^
cubeword.cpp:95:36: warning: array subscript has type 'char' [-Wchar-subscripts]
   95 |                     if (chgl[per[j]][per[h]][per[hh]] >= mod)
      |                                    ^
cubeword.cpp:95:44: warning: array subscript has type 'char' [-Wchar-subscripts]
   95 |                     if (chgl[per[j]][per[h]][per[hh]] >= mod)
      |                                            ^
cubeword.cpp:95:53: warning: array subscript has type 'char' [-Wchar-subscripts]
   95 |                     if (chgl[per[j]][per[h]][per[hh]] >= mod)
      |                                                     ^
cubeword.cpp:96:36: warning: array subscript has type 'char' [-Wchar-subscripts]
   96 |                         chgl[per[j]][per[h]][per[hh]] %= mod;
      |                                    ^
cubeword.cpp:96:44: warning: array subscript has type 'char' [-Wchar-subscripts]
   96 |                         chgl[per[j]][per[h]][per[hh]] %= mod;
      |                                            ^
cubeword.cpp:96:53: warning: array subscript has type 'char' [-Wchar-subscripts]
   96 |                         chgl[per[j]][per[h]][per[hh]] %= mod;
      |                                                     ^
cubeword.cpp:100:23: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
  100 |         for (j = 0; j < per.size(); j++)
      |                     ~~^~~~~~~~~~~~
cubeword.cpp:102:31: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
  102 |             for (int h = j; h < per.size(); h++)
      |                             ~~^~~~~~~~~~~~
cubeword.cpp:104:37: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
  104 |                 for (int hh = h; hh < per.size(); hh++)
      |                                  ~~~^~~~~~~~~~~~
cubeword.cpp:106:44: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
  106 |                     for (int glx = hh; glx < per.size(); glx++)
      |                                        ~~~~^~~~~~~~~~~~
cubeword.cpp:114:65: warning: array subscript has type 'char' [-Wchar-subscripts]
  114 |                                     anss = (anss + ((chgl[per[j]][per[h]][per[hh]] * chgl[per[j]][per[h]][per[glx]]) % mod * chgl[per[h]][per[hh]][per[glx]]) % mod * chgl[per[j]][per[hh]][per[glx]]) % mod;//
      |                                                                 ^
cubeword.cpp:114:73: warning: array subscript has type 'char' [-Wchar-subscripts]
  114 |                                     anss = (anss + ((chgl[per[j]][per[h]][per[hh]] * chgl[per[j]][per[h]][per[glx]]) % mod * chgl[per[h]][per[hh]][per[glx]]) % mod * chgl[per[j]][per[hh]][per[glx]]) % mod;//
      |                                                                         ^
cubeword.cpp:114:82: warning: array subscript has type 'char' [-Wchar-subscripts]
  114 |                                     anss = (anss + ((chgl[per[j]][per[h]][per[hh]] * chgl[per[j]][per[h]][per[glx]]) % mod * chgl[per[h]][per[hh]][per[glx]]) % mod * chgl[per[j]][per[hh]][per[glx]]) % mod;//
      |                                                                                  ^
cubeword.cpp:114:97: warning: array subscript has type 'char' [-Wchar-subscripts]
  114 |                                     anss = (anss + ((chgl[per[j]][per[h]][per[hh]] * chgl[per[j]][per[h]][per[glx]]) % mod * chgl[per[h]][per[hh]][per[glx]]) % mod * chgl[per[j]][per[hh]][per[glx]]) % mod;//
      |                                                                                                 ^
cubeword.cpp:114:105: warning: array subscript has type 'char' [-Wchar-subscripts]
  114 |                                     anss = (anss + ((chgl[per[j]][per[h]][per[hh]] * chgl[per[j]][per[h]][per[glx]]) % mod * chgl[per[h]][per[hh]][per[glx]]) % mod * chgl[per[j]][per[hh]][per[glx]]) % mod;//
      |                                                                                                         ^
cubeword.cpp:114:115: warning: array subscript has type 'char' [-Wchar-subscripts]
  114 |                                     anss = (anss + ((chgl[per[j]][per[h]][per[hh]] * chgl[per[j]][per[h]][per[glx]]) % mod * chgl[per[h]][per[hh]][per[glx]]) % mod * chgl[per[j]][per[hh]][per[glx]]) % mod;//
      |                                                                                                                   ^
cubeword.cpp:114:137: warning: array subscript has type 'char' [-Wchar-subscripts]
  114 |                                     anss = (anss + ((chgl[per[j]][per[h]][per[hh]] * chgl[per[j]][per[h]][per[glx]]) % mod * chgl[per[h]][per[hh]][per[glx]]) % mod * chgl[per[j]][per[hh]][per[glx]]) % mod;//
      |                                                                                                                                         ^
cubeword.cpp:114:146: warning: array subscript has type 'char' [-Wchar-subscripts]
  114 |                                     anss = (anss + ((chgl[per[j]][per[h]][per[hh]] * chgl[per[j]][per[h]][per[glx]]) % mod * chgl[per[h]][per[hh]][per[glx]]) % mod * chgl[per[j]][per[hh]][per[glx]]) % mod;//
      |                                                                                                                                                  ^
cubeword.cpp:114:156: warning: array subscript has type 'char' [-Wchar-subscripts]
  114 |                                     anss = (anss + ((chgl[per[j]][per[h]][per[hh]] * chgl[per[j]][per[h]][per[glx]]) % mod * chgl[per[h]][per[hh]][per[glx]]) % mod * chgl[per[j]][per[hh]][per[glx]]) % mod;//
      |                                                                                                                                                            ^
cubeword.cpp:114:178: warning: array subscript has type 'char' [-Wchar-subscripts]
  114 |                                     anss = (anss + ((chgl[per[j]][per[h]][per[hh]] * chgl[per[j]][per[h]][per[glx]]) % mod * chgl[per[h]][per[hh]][per[glx]]) % mod * chgl[per[j]][per[hh]][per[glx]]) % mod;//
      |                                                                                                                                                                                  ^
cubeword.cpp:114:187: warning: array subscript has type 'char' [-Wchar-subscripts]
  114 |                                     anss = (anss + ((chgl[per[j]][per[h]][per[hh]] * chgl[per[j]][per[h]][per[glx]]) % mod * chgl[per[h]][per[hh]][per[glx]]) % mod * chgl[per[j]][per[hh]][per[glx]]) % mod;//
      |                                                                                                                                                                                           ^
cubeword.cpp:114:197: warning: array subscript has type 'char' [-Wchar-subscripts]
  114 |                                     anss = (anss + ((chgl[per[j]][per[h]][per[hh]] * chgl[per[j]][per[h]][per[glx]]) % mod * chgl[per[h]][per[hh]][per[glx]]) % mod * chgl[per[j]][per[hh]][per[glx]]) % mod;//
      |                                                                                                                                                                                                     ^
cubeword.cpp:118:65: warning: array subscript has type 'char' [-Wchar-subscripts]
  118 |                                     anss = (anss + ((chgl[per[j]][per[h]][per[hh]] * chgl[per[j]][per[h]][per[glx]]) % mod * chgl[per[h]][per[hh]][per[glx]]) % mod * chgl[per[j]][per[hh]][per[glx]] % mod * 4) % mod;
      |                                                                 ^
cubeword.cpp:118:73: warning: array subscript has type 'char' [-Wchar-subscripts]
  118 |                                     anss = (anss + ((chgl[per[j]][per[h]][per[hh]] * chgl[per[j]][per[h]][per[glx]]) % mod * chgl[per[h]][per[hh]][per[glx]]) % mod * chgl[per[j]][per[hh]][per[glx]] % mod * 4) % mod;
      |                                                                         ^
cubeword.cpp:118:82: warning: array subscript has type 'char' [-Wchar-subscripts]
  118 |                                     anss = (anss + ((chgl[per[j]][per[h]][per[hh]] * chgl[per[j]][per[h]][per[glx]]) % mod * chgl[per[h]][per[hh]][per[glx]]) % mod * chgl[per[j]][per[hh]][per[glx]] % mod * 4) % mod;
      |                                                                                  ^
cubeword.cpp:118:97: warning: array subscript has type 'char' [-Wchar-subscripts]
  118 |                                     anss = (anss + ((chgl[per[j]][per[h]][per[hh]] * chgl[per[j]][per[h]][per[glx]]) % mod * chgl[per[h]][per[hh]][per[glx]]) % mod * chgl[per[j]][per[hh]][per[glx]] % mod * 4) % mod;
      |                                                                                                 ^
cubeword.cpp:118:105: warning: array subscript has type 'char' [-Wchar-subscripts]
  118 |                                     anss = (anss + ((chgl[per[j]][per[h]][per[hh]] * chgl[per[j]][per[h]][per[glx]]) % mod * chgl[per[h]][per[hh]][per[glx]]) % mod * chgl[per[j]][per[hh]][per[glx]] % mod * 4) % mod;
      |                                                                                                         ^
cubeword.cpp:118:115: warning: array subscript has type 'char' [-Wchar-subscripts]
  118 |                                     anss = (anss + ((chgl[per[j]][per[h]][per[hh]] * chgl[per[j]][per[h]][per[glx]]) % mod * chgl[per[h]][per[hh]][per[glx]]) % mod * chgl[per[j]][per[hh]][per[glx]] % mod * 4) % mod;
      |                                                                                                                   ^
cubeword.cpp:118:137: warning: array subscript has type 'char' [-Wchar-subscripts]
  118 |                                     anss = (anss + ((chgl[per[j]][per[h]][per[hh]] * chgl[per[j]][per[h]][per[glx]]) % mod * chgl[per[h]][per[hh]][per[glx]]) % mod * chgl[per[j]][per[hh]][per[glx]] % mod * 4) % mod;
      |                                                                                                                                         ^
cubeword.cpp:118:146: warning: array subscript has type 'char' [-Wchar-subscripts]
  118 |                                     anss = (anss + ((chgl[per[j]][per[h]][per[hh]] * chgl[per[j]][per[h]][per[glx]]) % mod * chgl[per[h]][per[hh]][per[glx]]) % mod * chgl[per[j]][per[hh]][per[glx]] % mod * 4) % mod;
      |                                                                                                                                                  ^
cubeword.cpp:118:156: warning: array subscript has type 'char' [-Wchar-subscripts]
  118 |                                     anss = (anss + ((chgl[per[j]][per[h]][per[hh]] * chgl[per[j]][per[h]][per[glx]]) % mod * chgl[per[h]][per[hh]][per[glx]]) % mod * chgl[per[j]][per[hh]][per[glx]] % mod * 4) % mod;
      |                                                                                                                                                            ^
cubeword.cpp:118:178: warning: array subscript has type 'char' [-Wchar-subscripts]
  118 |                                     anss = (anss + ((chgl[per[j]][per[h]][per[hh]] * chgl[per[j]][per[h]][per[glx]]) % mod * chgl[per[h]][per[hh]][per[glx]]) % mod * chgl[per[j]][per[hh]][per[glx]] % mod * 4) % mod;
      |                                                                                                                                                                                  ^
cubeword.cpp:118:187: warning: array subscript has type 'char' [-Wchar-subscripts]
  118 |                                     anss = (anss + ((chgl[per[j]][per[h]][per[hh]] * chgl[per[j]][per[h]][per[glx]]) % mod * chgl[per[h]][per[hh]][per[glx]]) % mod * chgl[per[j]][per[hh]][per[glx]] % mod * 4) % mod;
      |                                                                                                                                                                                           ^
cubeword.cpp:118:197: warning: array subscript has type 'char' [-Wchar-subscripts]
  118 |                                     anss = (anss + ((chgl[per[j]][per[h]][per[hh]] * chgl[per[j]][per[h]][per[glx]]) % mod * chgl[per[h]][per[hh]][per[glx]]) % mod * chgl[per[j]][per[hh]][per[glx]] % mod * 4) % mod;
      |                                                                                                                                                                                                     ^
cubeword.cpp:125:65: warning: array subscript has type 'char' [-Wchar-subscripts]
  125 |                                     anss = (anss + ((chgl[per[j]][per[h]][per[hh]] * chgl[per[j]][per[h]][per[glx]]) % mod * chgl[per[h]][per[hh]][per[glx]]) % mod * chgl[per[j]][per[hh]][per[glx]] % mod * 6) % mod;
      |                                                                 ^
cubeword.cpp:125:73: warning: array subscript has type 'char' [-Wchar-subscripts]
  125 |                                     anss = (anss + ((chgl[per[j]][per[h]][per[hh]] *
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...