Submission #840901

#TimeUsernameProblemLanguageResultExecution timeMemory
840901EntityPlanttType Printer (IOI08_printer)C++17
40 / 100
428 ms59700 KiB
#include <iostream> #include <algorithm> using namespace std; struct TrieNode { int mxdepth = 1; bool word = false; TrieNode *children[27] = {}; }; int n; string s, pr; TrieNode *root = new TrieNode, *now; void calcmxdepth(TrieNode *node) { for (int i = 0; i < 26; i++) { if (!node->children[i]) continue; calcmxdepth(node->children[i]); if (node->children[i]->mxdepth >= node->mxdepth) { node->mxdepth = node->children[i]->mxdepth + 1; } } } void print(TrieNode *node) { if (!node) return; if (node->word) pr.push_back('P'); short arr[26] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25}; sort(arr, arr + 26, [&](short a, short b) { if (!node->children[a]) return false; if (!node->children[b]) return true; return node->children[a]->mxdepth < node->children[b]->mxdepth; }); for (int i = 0; node->children[arr[i]]; i++) { pr.push_back(arr[i] + 'a'); print(node->children[arr[i]]); pr.push_back('-'); } } int main() { cin >> n; while (n--) { cin >> s; now = root; for (char &x : s) { if (!x) break; if (!now->children[x - 'a']) { now->children[x - 'a'] = new TrieNode; } now = now->children[x - 'a']; } now->word = true; } calcmxdepth(root); print(root); while (pr.back() == '-') pr.pop_back(); cout << pr.size() << '\n'; for (char &ch : pr) cout << ch << endl; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...