Submission #1176505

#TimeUsernameProblemLanguageResultExecution timeMemory
1176505justokType Printer (IOI08_printer)C++20
20 / 100
56 ms57968 KiB
#include <bits/stdc++.h> // + using namespace std; // +++ #define inf 1e18 // + #define FADY ios_base::sync_with_stdio(0), cin.tie(0); files(); #define all(a) a.begin(), a.end() #define int long long string YN[2] = {"No", "Yes"}; void files() { // #ifndef ONLINE_JUDGE // freopen("input.txt", "r", stdin), freopen("output.txt", "w", stdout); // #endif } struct Trie { struct Node { int vis[26]{}; int frq = 0, en = 0; }; vector<Node> tree; Trie() { tree.emplace_back(); } void add(string s) { int idx = 0; for (auto &i : s) { int ch = i - 'a'; if (tree[idx].vis[ch] == 0) { tree[idx].vis[ch] = tree.size(); tree.emplace_back(); } idx = tree[idx].vis[ch]; tree[idx].frq++; } tree[idx].en++; } vector<char> ans; void dfs(int idx, bool big) { vector<pair<int, int>> v; for (int j = 0; j < 26; ++j) { int nxt = tree[idx].vis[j]; if (nxt) { v.push_back({tree[nxt].frq, j}); } } if (tree[idx].en) { ans.push_back('P'); } sort(all(v)); for (int i = 0; i < v.size(); ++i) { auto [f, ch] = v[i]; ans.push_back(ch + 'a'); bool nwBig = (big && (i == v.size() - 1)); dfs(tree[idx].vis[ch], nwBig); if (!nwBig) { ans.push_back('-'); } } } }; void JustOK() { int n; cin >> n; Trie t; for (int i = 0; i < n; ++i) { string s; cin >> s; t.add(s); } t.dfs(0, 1); cout << t.ans.size() << '\n'; for (auto &i : t.ans) { cout << i << '\n'; } } signed main() { FADY; int tc = 1; // cin >> tc; while (tc--) JustOK(); }
#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...