제출 #1231004

#제출 시각아이디문제언어결과실행 시간메모리
1231004altern23Cubeword (CEOI19_cubeword)C++20
84 / 100
1102 ms32492 KiB
#include <bits/stdc++.h> using namespace std; #define ll long long #define pii pair<ll, ll> #define fi first #define sec second #define ld long double const int MAXN = 150; const ll INF = 1e18; const int MOD = 998244353; ll dp[15][64][64][64]; ll cnt[15][64][64]; int main(){ ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); int tc = 1; // cin >> tc; for(;tc--;){ ll N; cin >> N; auto conv = [&](char c){ if('A' <= c && c <= 'Z') return (c - 'A'); if('a' <= c && c <= 'z') return 26 + (c - 'a'); if('0' <= c && c <= '9') return 52 + (c - '0'); }; map<string, bool> vis; for(int i = 1; i <= N; i++){ string s; cin >> s; if(!vis[s]) cnt[(int)s.size()][conv(s[0])][conv(s.back())]++; vis[s] = 1; string t = s; reverse(t.begin(), t.end()); if(!vis[t]) cnt[(int)s.size()][conv(t[0])][conv(t.back())]++; vis[t] = 1; } ll ans = 0; for(int len = 3; len <= 10; len++){ for(int j = 0; j <= 62; j++){ for(int k = 0; k < 62; k++){ for(int l = 0; l < 62; l++){ for(int zz = 0; zz < 62; zz++){ dp[len][j][k][l] += cnt[len][j][zz] * cnt[len][k][zz] % MOD * cnt[len][l][zz] % MOD; dp[len][j][k][l] %= MOD; } } } } for(int j = 0; j <= 62; j++){ for(int k = 0; k < 62; k++){ for(int l = 0; l < 62; l++){ if(!dp[len][j][k][l]) continue; for(int zz = 0; zz < 62; zz++){ ans += dp[len][j][k][l] * dp[len][j][k][zz] % MOD * dp[len][j][zz][l] % MOD * dp[len][zz][k][l] % MOD; ans %= MOD; } } } } } cout << ans << "\n"; } } /* */

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

cubeword.cpp: In lambda function:
cubeword.cpp:27:17: warning: control reaches end of non-void function [-Wreturn-type]
   27 |                 };
      |                 ^
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...