Submission #1326572

#TimeUsernameProblemLanguageResultExecution timeMemory
1326572crispxxType Printer (IOI08_printer)C++20
30 / 100
96 ms85100 KiB
#include <bits/stdc++.h> using namespace std; using ll = long long; struct node { char c; bool flag; int sz; node *ch[26]; node(char c = ' ', bool flag = false, int sz = 1) : c(c), flag(flag), sz(sz) { for(int i = 0; i < 26; i++) { ch[i] = NULL; } } }; void add(node *root, const string &s) { node *cur = root; for(auto &c : s) { if(cur -> ch[c - 'a'] == NULL) { cur -> ch[c - 'a'] = new node(c); } cur = cur -> ch[c - 'a']; } cur -> flag = true; } void solve() { int n; cin >> n; vector<string> s(n); node *root = new node(); for(auto &str : s) { cin >> str; add(root, str); } { auto dfs = [&](auto &&self, node *cur) -> void { for(int i = 0; i < 26; i++) { if(cur -> ch[i] != NULL) { self(self, cur -> ch[i]); cur -> sz += cur -> ch[i] -> sz; } } }; dfs(dfs, root); } vector<char> ans; { auto dfs = [&](auto &&self, node *cur) -> void { vector<array<int, 2>> b; for(int i = 0; i < 26; i++) { if(cur -> ch[i] != NULL) { b.push_back({cur -> ch[i] -> sz, i}); } } sort(b.begin(), b.end()); if(cur -> c != ' ') ans.push_back(cur -> c); if(cur -> flag) ans.push_back('P'); for(auto [sz, i] : b) { self(self, cur -> ch[i]); } if(cur -> c != ' ') ans.push_back('-'); }; dfs(dfs, root); } while(!ans.empty() && ans.back() == '-') ans.pop_back(); cout << ans.size() << '\n'; for(auto &c : ans) cout << c << '\n'; } signed main() { ios::sync_with_stdio(false); cin.tie(nullptr); solve(); }
#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...