Submission #1313837

#TimeUsernameProblemLanguageResultExecution timeMemory
1313837algoproclubType Printer (IOI08_printer)C++20
10 / 100
1 ms1080 KiB
// UUID: a0c452bb-5eff-4086-b645-98923e6819e4 #include <bits/stdc++.h> using namespace std; vector<vector<int>> trie(250*20+1, vector<int>(26, -1)); vector<bool> iswordend(250*20+1, false); int nodes = 0; vector<char> ops; void insert(const string s){ int node = 0; for(int i = 0; i < s.size(); i++) { if (trie[node][s[i] - 'a'] == -1) trie[node][s[i] - 'a'] = ++nodes; node = trie[node][s[i] - 'a']; if (i == s.size()-1) iswordend[node]=true; } } void dfs(int node){ if (iswordend[node]) ops.push_back('P'); for(int i = 0; i < 26; i++){ if (trie[node][i] != -1){ ops.push_back((char)i+'a'); dfs(trie[node][i]); } } ops.push_back('-'); } void solve() { int n; cin >> n; for (int i = 0; i < n; i++){ string s; cin >> s; insert(s); } dfs(0); for (int i = ops.size()-1; i >= 0; i--){ if (ops[i] != '-') break; ops.pop_back(); } cout << ops.size() << "\n"; for (char c : ops) cout << c << "\n"; return; } int main() { ios::sync_with_stdio(false); cin.tie(nullptr); int t = 1; //cin >> t; while (t--) { solve(); } 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...