제출 #1313839

#제출 시각아이디문제언어결과실행 시간메모리
1313839algoproclubType Printer (IOI08_printer)C++20
10 / 100
59 ms68088 KiB
// UUID: e6c99689-84ed-47b8-b26e-93c838336d6d #include <bits/stdc++.h> using namespace std; vector<vector<int>> trie(25000*20+1, vector<int>(26, -1)); vector<bool> iswordend(25000*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...