답안 #541236

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
541236 2022-03-22T20:01:02 Z Deepesson Cubeword (CEOI19_cubeword) C++17
0 / 100
557 ms 10528 KB
#include <bits/stdc++.h>
#define MAX 105000
std::vector<std::string> words[MAX];
int N;
const long long MOD = 998244353;
long long tabela[300][300];
void iniciar(int x){
    std::map<std::string,bool> mapa;
    memset(&tabela[0][0],0,sizeof(tabela));
    for(auto&z:words[x]){
        mapa[z]=true;
        std::reverse(z.begin(),z.end());
        mapa[z]=true;
    }
    for(auto&x:mapa){
        tabela[x.first[0]-'a'][x.first.back()-'a']++;
    }
}
long long solve(void){
    long long ans=0;
    for(int a=0;a!=6;++a){
        for(int b=0;b!=6;++b){
            for(int c=0;c!=6;++c){
                for(int d=0;d!=6;++d){
                    for(int e=0;e!=6;++e){
                        for(int f=0;f!=6;++f){
                            for(int g=0;g!=6;++g){
                                for(int h=0;h!=6;++h){
                                    long long vals[]={
                                        tabela[a][b],
                                        tabela[a][c],
                                        tabela[c][d],
                                        tabela[d][b],

                                        tabela[a][f],
                                        tabela[b][e],
                                        tabela[d][h],
                                        tabela[c][g],

                                        tabela[f][g],
                                        tabela[g][h],
                                        tabela[h][e],
                                        tabela[f][e]
                                    };
                                    long long loc=1;
                                    for(auto&x:vals)loc=(loc*x)%MOD;
                                    ans=(ans+loc)%MOD;
                                }
                            }
                        }
                    }
                }
            }
        }
    }
    return ans;

}
int main()
{
    std::ios::sync_with_stdio(false);
    std::cin.tie(0);
    std::cout.tie(0);
    std::cin>>N;
    for(int i=0;i!=N;++i){
        std::string k;
        std::cin>>k;
        words[k.size()].push_back(k);
    }
    long long tot = 0;
    for(int i=3;i!=10;++i){
        iniciar(i);
        tot = (tot+solve())%MOD;
    }
    std::cout<<tot<<"\n";
}
# 결과 실행 시간 메모리 Grader output
1 Incorrect 557 ms 10528 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 557 ms 10528 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 557 ms 10528 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 557 ms 10528 KB Output isn't correct
2 Halted 0 ms 0 KB -