Submission #276039

#TimeUsernameProblemLanguageResultExecution timeMemory
276039egekabasCubeword (CEOI19_cubeword)C++14
0 / 100
1154 ms6404 KiB
#include <bits/stdc++.h> #pragma GCC optimize ("O3") #define all(x) (x).begin(), (x).end() #define ff first #define ss second #define pb push_back #define mp make_pair using namespace std; typedef long long ll; typedef unsigned long long ull; typedef long double ld; typedef pair<ll, ll> pll; typedef pair<ull, ull> pull; typedef pair<int, int> pii; typedef pair<ld, ld> pld; const ll mod = 998244353; ll ans = 0; vector<pair<ll, pair<char, char>>> a[11]; const ll n = 62; ll cnt[70][70]; map<char, ll> mpp; ll dp[70][70][70]; ll hh(string s){ ll ret = 0; ll p = 233; for(auto u : s){ ret += p*u%mod; if(ret >= mod) ret -= mod; p = p*p%mod; } return ret; } int main() { ios_base::sync_with_stdio(false); cin.tie(nullptr); //freopen("in.txt", "r", stdin); //freopen("out.txt", "w", stdout); int t; cin >> t; while(t--){ string s; cin >> s; a[s.size()-3].pb({hh(s), {s[0], s.back()}}); reverse(all(s)); a[s.size()-3].pb({hh(s), {s[0], s.back()}}); } int curcnt = 0; for(char i = 'a'; i <= 'z'; ++i) mpp[i] = curcnt++; for(char i = 'A'; i <= 'Z'; ++i) mpp[i] = curcnt++; for(char i = '0'; i <= '9'; ++i) mpp[i] = curcnt++; for(int cur = 0; cur < 8; ++cur){ for(int i = 0; i < n; ++i) for(int j = 0; j < n; ++j) cnt[i][j] = 0; sort(all(a[cur])); for(int i = 0; i < a[cur].size(); ++i){ if(i != 0 || a[cur][i] != a[cur][i-1]) cnt[mpp[a[cur][i].ss.ff]][mpp[a[cur][i].ss.ss]]++; } for(int i = 0; i < n; ++i) for(int j = 0; j < n; ++j) for(int k = 0; k < n; ++k){ dp[i][j][k] = 0; for(int mid = 0; mid < n; ++mid){ dp[i][j][k] += cnt[i][mid]*cnt[j][mid]%mod*cnt[k][mid]%mod; if(dp[i][j][k] >= mod) dp[i][j][k] -= mod; } } for(int i = 0; i < n; ++i) for(int k = 0; k < n; ++k) for(int y = 0; y < n; ++y) for(int j = 0; j < n; ++j){ ans += dp[i][k][j]*dp[i][j][y]%mod*dp[y][j][k]%mod*dp[i][k][y]%mod; if(ans >= mod) ans -= mod; } } cout << ans << '\n'; //cout<<endl<<fixed<<setprecision(2)<<1000.0 * clock() / CLOCKS_PER_SEC<< " milliseconds "; }

Compilation message (stderr)

cubeword.cpp: In function 'int main()':
cubeword.cpp:66:26: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<long long int, std::pair<char, char> > >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   66 |         for(int i = 0; i < a[cur].size(); ++i){
      |                        ~~^~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...