제출 #1194863

#제출 시각아이디문제언어결과실행 시간메모리
1194863irmuunCubeword (CEOI19_cubeword)C++20
21 / 100
568 ms3676 KiB
#include <bits/stdc++.h> using namespace std; #define ll long long #define pb push_back #define ff first #define ss second #define all(s) s.begin(),s.end() #define rall(s) s.rbegin(),s.rend() const int mod=998244353; void mul(int &a,int b){ a=1ll*a*b%mod; } void add(int &a,int b){ a+=b; if(a>=mod) a-=mod; } int main(){ ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0); int n; cin>>n; string s[n+5]; auto cnt=vector(11,vector(26,vector(26,0))); for(int i=1;i<=n;i++){ cin>>s[i]; string t=s[i]; reverse(all(t)); if(t<s[i]) s[i]=t; } sort(s+1,s+n+1); for(int i=1;i<=n;i++){ if(i>1&&s[i]==s[i-1]) continue; cnt[s[i].size()][min(s[i][0],s[i].back())-'a'][max(s[i][0],s[i].back())-'a']++; if(s[i][0]==s[i].back()){ string t=s[i]; reverse(all(t)); if(s[i]!=t){ cnt[s[i].size()][min(s[i][0],s[i].back())-'a'][max(s[i][0],s[i].back())-'a']++; } } } int pos=1679616; int ans=0; for(int a=3;a<=10;a++){ for(int i=0;i<pos;i++){ int cur=1,c[8]; int x=i; for(int j=0;j<8;j++){ c[j]=x%6; x/=6; } for(int j=0;j<4;j++){ mul(cur,cnt[a][min(c[j],c[(j+1)%4])][max(c[j],c[(j+1)%4])]); mul(cur,cnt[a][min(c[j+4],c[(j+1)%4+4])][max(c[j+4],c[(j+1)%4+4])]); mul(cur,cnt[a][min(c[j],c[j+4])][max(c[j],c[j+4])]); } add(ans,cur); } } cout<<ans; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...