Submission #1268232

#TimeUsernameProblemLanguageResultExecution timeMemory
1268232smtyonType Printer (IOI08_printer)C++20
0 / 100
36 ms28820 KiB
#include<bits/stdc++.h> using namespace std; #define ll long long #define SMTYON ios::sync_with_stdio(0);cin.tie(0);cout.tie(0); #define hi cerr<<"HI\n"; /* -> NO CLEAN CODE HERE <- */ struct Node { bool isEnd = false; int adj[26]{}; Node() { memset(adj, 0, sizeof adj); } }; class Trie { public: vector<Node> h; Trie() { h.emplace_back(); } void insert(const string &s) { int node = 0; for (char c : s) { int id = c - 'a'; if (!h[node].adj[id]) { h[node].adj[id] = h.size(); h.emplace_back(); } node = h[node].adj[id]; } h[node].isEnd = true; } void dfs(int u, vector<char> &ops) { if (h[u].isEnd) ops.push_back('P'); for (int c = 0; c < 26; c++) { if (h[u].adj[c]) { ops.push_back('a' + c); dfs(h[u].adj[c], ops); ops.push_back('-'); } } } }; signed main() { /* ^^^ */ SMTYON /* ^^^ */ // ->> practice makes perfect int N; cin >> N; Trie t; vector<string> words(N); for (int i = 0; i < N; i++) { cin >> words[i]; t.insert(words[i]); } vector<char> ops; t.dfs(0, ops); cout << ops.size() << "\n"; for (char c : ops) cout << c << "\n"; }
#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...