Submission #1177236

#TimeUsernameProblemLanguageResultExecution timeMemory
1177236yousuf11Type Printer (IOI08_printer)C++20
10 / 100
58 ms56692 KiB
#include <bits/stdc++.h> using namespace std; #define all(v) v.begin(), v.end() #define rall(v) v.rbegin(), v.rend() #define int ll typedef long long ll; #define Ishouldbeunrated ios::sync_with_stdio(0), cin.tie(0), cout.tie(0); struct Trie { struct Node { int ch[26] = {0}; int f = 0; }; vector<Node> trie; Trie() { trie.emplace_back(); } void insert(const string &s) { int node = 0; for (char c : s) { int i = c - 'a'; if (!trie[node].ch[i]) { trie[node].ch[i] = trie.size(); trie.emplace_back(); } node = trie[node].ch[i]; ++trie[node].f; } } vector<char> op; void print(int node) { vector<pair<int, int>> to; for (int i = 0; i < 26; ++i) if (trie[node].ch[i]) to.emplace_back(trie[trie[node].ch[i]].f, i); if (to.empty()) op.push_back('P'); sort(all(to)); for (auto i : to) { op.push_back(i.second + 'a'); print(trie[node].ch[i.second]); op.push_back('-'); } } }; void die() { int n; cin >> n; vector<string> words(n); for (auto &w : words) cin >> w; Trie tr; for (const auto &w : words) tr.insert(w); tr.print(0); while (!tr.op.empty() && tr.op.back() == '-') tr.op.pop_back(); cout << tr.op.size() << "\n"; for (char c : tr.op) cout << c << "\n"; } signed main() { Ishouldbeunrated die(); }
#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...