제출 #1245605

#제출 시각아이디문제언어결과실행 시간메모리
1245605abdelhakimCubeword (CEOI19_cubeword)C++20
0 / 100
327 ms3564 KiB
#include <bits/stdc++.h> #define ll long long #define inf (ll)(1e15) #define mod (ll)998244353 #define dbg(x) cerr <<#x << ' ' << x <<endl; using namespace std; void printvec(vector<ll>& v) { for (auto &&i : v) { cout <<i<<' '; } cout << endl; } map<pair<char,char>,ll> mp; ll anss(ll i, ll n, string cur) { if(i==8) { ll ans=1; for (int j=0;j<7;j+=2) { ans*=mp[{cur[j],cur[j+1]}]; ans%=mod; } for (int j=0;j<1;j++) { ans*=mp[{cur[j],cur[j+2]}]; ans%=mod; } for (int j=4;j<6;j++) { ans*=mp[{cur[j],cur[j+2]}]; ans%=mod; } for (int j=0;j<4;j++) { ans*=mp[{cur[j],cur[j+4]}]; ans%=mod; } return ans; } ll sm=0; for (char cr='a';cr<='f';cr++) { sm+=anss(i+1,n,cur+cr); sm%=mod; } return sm; } int main() { ios::sync_with_stdio(0); cin.tie(0); ll n; cin>>n; vector<string> s(n); ll sz=0; for (int i=0;i<n;i++) { cin>>s[i]; sz=max(sz,(ll)s[i].size()); } // vector<string> s2; for (int i=0;i<n;i++) { if(s[i].size()==sz) { mp[{s[i][0],s[i].back()}]++; // s2.push_back(s[i]); } } cout << anss(0,n,"") << endl; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...