Submission #840275

#TimeUsernameProblemLanguageResultExecution timeMemory
840275EntityPlanttType Printer (IOI08_printer)C++14
40 / 100
66 ms71672 KiB
#include <iostream> #include <algorithm> using namespace std; struct TrieNode { int mxdepth = 1; bool word = false; TrieNode *children[26] = {}; }; 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->word) pr += 'P'; int 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, [&](int a, int 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 += arr[i] + 'a'; print(node->children[arr[i]]); pr += '-'; } } int main() { ios::sync_with_stdio(); cin.tie(0); cout.tie(0); cin >> n; while (n--) { cin >> s; now = root; for (char &x : s) { 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 << '\n'; 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...