제출 #1315183

#제출 시각아이디문제언어결과실행 시간메모리
1315183algoproclubType Printer (IOI08_printer)C++20
0 / 100
232 ms327680 KiB
// UUID: acb30225-ec5f-4870-95fb-c6c3cc3b04f7 #include <bits/stdc++.h> using namespace std; vector<vector<int>> trie(2.5e5+1, vector<int>(26, 0)); vector<bool> word_end(2.5e5+1, false); vector<int> utso(2.5e5+1, -1); vector<char>out; int cmt = 1; void add(string word, bool last){ int x = 1; for(char c: word){ int j = c - 'a'; if(!trie[x][j]){ cmt++; trie[x][j] = cmt; } if(last) utso[x] = j; x = trie[x][j]; } word_end[x] = true; } void dfs(int csucs){ if(word_end[csucs]) out.push_back('P'); for(int i = 0; i < 26; i++){ if(utso[csucs] == i || trie[csucs][i] == 0){ continue; } out.push_back(char(i+'a')); dfs(trie[csucs][i]); } if(utso[csucs] != 0){ out.push_back(char(utso[csucs]+'a')); dfs(trie[csucs][utso[csucs]]); } out.push_back('-'); } int main() { ios::sync_with_stdio(false); cin.tie(0); int n; cin >> n; string mx_word = ""; for(int i = 0; i < n; i++){ string s; cin >> s; add(s, false); if(s.size() > mx_word.size()){ mx_word = s; } } add(mx_word, true); dfs(1); cout << out.size()-mx_word.size()-1 << "\n"; for(int i = 0; i < out.size()-mx_word.size()-1; i++){ cout << out[i] << "\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...