# | Submission time | Handle | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
660101 | 2022-11-20T11:04:38 Z | 600Mihnea | Cubeword (CEOI19_cubeword) | C++17 | 64 ms | 7904 KB |
bool home = 0; #include <bits/stdc++.h> using namespace std; const int MODULO = 998244353; int get_char_id(char ch) { assert(('a' <= ch && ch <= 'z') || ('A' <= ch && ch <= 'Z') || ('0' <= ch && ch <= '9')); if ('a' <= ch && ch <= 'z') { return ch - 'a'; } if ('A' <= ch && ch <= 'Z') { return 1 + get_char_id('z') + ch - 'A'; } return 1 + get_char_id('Z') + ch - '0'; } const int MAX_WORD_LENGTH = 10; ///const int ALPHABET_SIZE = 2 * 26 + 10; const int ALPHABET_SIZE = 16; vector<string> words[MAX_WORD_LENGTH + 1]; int cnt_words[ALPHABET_SIZE][ALPHABET_SIZE]; int cnt3[ALPHABET_SIZE][ALPHABET_SIZE][ALPHABET_SIZE]; int main() { if (home == 0) { ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); } else { freopen ("input.txt", "r", stdin); } { size_t num_samples; cin >> num_samples; for (size_t sample_index = 0; sample_index < num_samples; sample_index++) { string word; cin >> word; words[word.size()].push_back(word); } } int solution = 0; for (size_t word_length = 1; word_length <= MAX_WORD_LENGTH; word_length++) { if (words[word_length].empty()) { continue; } size_t word_count = words[word_length].size(); for (size_t word_index = 0; word_index < word_count; word_index++) { string reverse_word = words[word_length][word_index]; reverse(reverse_word.begin(), reverse_word.end()); words[word_length].push_back(reverse_word); } sort(words[word_length].begin(), words[word_length].end()); words[word_length].resize(unique(words[word_length].begin(), words[word_length].end()) - words[word_length].begin()); word_count = words[word_length].size(); for (size_t first_letter = 0; first_letter < ALPHABET_SIZE; first_letter++) { for (size_t last_letter = 0; last_letter < ALPHABET_SIZE; last_letter++) { cnt_words[first_letter][last_letter] = 0; } } for (size_t word_index = 0; word_index < word_count; word_index++) { cnt_words[get_char_id(words[word_length][word_index][0])][get_char_id(words[word_length][word_index].back())]++; } for (size_t a = 0; a < ALPHABET_SIZE; a++) { for (size_t b = a; b < ALPHABET_SIZE; b++) { for (size_t c = b; c < ALPHABET_SIZE; c++) { cnt3[a][b][c] = 0; for (size_t d = 0; d < ALPHABET_SIZE; d++) { cnt3[a][b][c] = (cnt3[a][b][c] + 1LL * cnt_words[d][a] * cnt_words[d][b] * cnt_words[d][c]) % MODULO; } cnt3[a][c][b] = cnt3[b][a][c] = cnt3[b][c][a] = cnt3[c][a][b] = cnt3[c][b][a] = cnt3[a][b][c]; } } } for (size_t a = 0; a < ALPHABET_SIZE; a++) { for (size_t b = a + 1; b < ALPHABET_SIZE; b++) { for (size_t c = b + 1; c < ALPHABET_SIZE; c++) { for (size_t d = c + 1; d < ALPHABET_SIZE; d++) { if (a != b && a != c && a != d && b != c && b != d && c != d) { int x1 = cnt3[a][b][c]; int x2 = cnt3[a][d][b]; int x3 = cnt3[a][c][d]; int x4 = cnt3[b][c][d]; solution = (solution + 1LL * x1 * x2 % MODULO * x3 % MODULO * x4) % MODULO; } } } } } for (size_t a = 0; a < ALPHABET_SIZE; a++) { for (size_t b = 0; b < ALPHABET_SIZE; b++) { for (size_t c = 0; c < ALPHABET_SIZE; c++) { for (size_t d = 0; d < ALPHABET_SIZE; d++) { if (a == b || a == c || a == d || b == c || b == d || c == d) { int x1 = cnt3[a][b][c]; int x2 = cnt3[a][d][b]; int x3 = cnt3[a][c][d]; int x4 = cnt3[b][c][d]; solution = (solution + 1LL * x1 * x2 % MODULO * x3 % MODULO * x4) % MODULO; } } } } } } cout << solution << "\n"; return 0; }
Compilation message
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Incorrect | 64 ms | 7904 KB | Output isn't correct |
2 | Halted | 0 ms | 0 KB | - |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Incorrect | 64 ms | 7904 KB | Output isn't correct |
2 | Halted | 0 ms | 0 KB | - |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Incorrect | 64 ms | 7904 KB | Output isn't correct |
2 | Halted | 0 ms | 0 KB | - |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Incorrect | 64 ms | 7904 KB | Output isn't correct |
2 | Halted | 0 ms | 0 KB | - |