제출 #360036

#제출 시각아이디문제언어결과실행 시간메모리
360036mohamedsobhi777Cubeword (CEOI19_cubeword)C++14
84 / 100
878 ms11564 KiB
#include <bits/stdc++.h> #include <ext/pb_ds/assoc_container.hpp> #pragma GCC optimize("-Ofast") //#pragma GCC optimize("trapv") #pragma GCC target("sse,sse2,sse3,ssse3,sse4,sse4.2,popcnt,abm,mmx,avx2,tune=native") #pragma GCC optimize("-ffast-math") #pragma GCC optimize("-funroll-loops") using namespace std; using namespace __gnu_pbds; #define vi vector<int> #define vll vector<ll> #define vii vector<pair<int, int>> #define vvi vector<vi> #define vvii vector<vii> #define pii pair<int, int> #define pll pair<ll, ll> #define loop(_) for (int __ = 0; __ < (_); ++__) #define forn(i, n) for (int i = 0; i < n; ++i) #define pb push_back #define f first #define s second #define sz(_) ((int)_.size()) #define all(_) _.begin(), _.end() #define uni(_) unique(_) #define lb lower_bound #define ub upper_bound #define si set<int> #define ms multiset<int> #define qi queue<int> #define pq prioriry_queue<int> #define mi map<int, int> #define inc(i, l, r) for (int i = l; i <= r; i++) #define dec(i, l, r) for (int i = l; i >= r; i--) using lll = __int128; using ll = long long; using ld = long double; const int N = 1e5 + 7; const ll mod = 998244353; const ll inf = 2e18; auto ra = [] {char *p = new char ; delete p ; return ll(p) ; }; mt19937_64 rng(chrono::steady_clock::now().time_since_epoch().count() * (ra() | 1)); typedef tree<pii, null_type, less<pii>, rb_tree_tag, tree_order_statistics_node_update> os; int n; int id(char c) { if (c >= 'a' && c <= 'z') return c - 'a'; if (c >= 'A' && c <= 'Z') return 26 + c - 'A'; return 52 + c - '0'; } const int S = 52; int fr[S][S]; ll D[S][S][S]; ll ans; vector<string> gbl[N]; int vis[S][S][S]; void solve(int ix) { memset(D, 0, sizeof D); int z = sz(gbl[ix]); inc(a, 0, S - 1) inc(b, 0, S - 1) inc(c, 0, S - 1) inc(d, 0, S - 1) { D[b][c][d] += 1ll * fr[a][b] * fr[a][c] % mod * fr[a][d] % mod; D[b][c][d] %= mod; } inc(a, 0, S - 1) inc(b, 0, S - 1) inc(c, 0, S - 1) inc(d, 0, S - 1) { ans += 1ll * D[a][b][c] * D[a][b][d] % mod * D[b][c][d] % mod * D[a][c][d] % mod; ans %= mod; } } int main() { ios_base::sync_with_stdio(0); cin.tie(0); #ifndef ONLINE_JUDGE #endif cin >> n; vector<string> vec; for (int i = 0; i < n; ++i) { string st, ts; cin >> st; ts = st; reverse(all(ts)); gbl[sz(st)].pb(ts), gbl[sz(st)].pb(st); } for (int i = 3; i <= 10; ++i) { sort(all(gbl[i])); gbl[i].erase(unique(all(gbl[i])), gbl[i].end()); for (int a = 0; a < S; ++a) { for (int b = 0; b < S; ++b) { fr[a][b] = 0; } } for (auto &u : gbl[i]) fr[id(u[0])][id(u[sz(u) - 1])]++; solve(i); } cout << ans; return 0; }

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

cubeword.cpp: In function 'void solve(int)':
cubeword.cpp:71:12: warning: unused variable 'z' [-Wunused-variable]
   71 |        int z = sz(gbl[ix]);
      |            ^
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...