제출 #1313831

#제출 시각아이디문제언어결과실행 시간메모리
1313831zuzuType Printer (IOI08_printer)C++20
30 / 100
74 ms53920 KiB
#include <bits/stdc++.h> using namespace std; struct Node { int nxt[26]; Node(){ fill(nxt, nxt+26, -1); } }; vector <bool> ending(5e5 + 5, false); vector <Node> trie(1); void Insert(string s) { int u = 0; for(auto x : s){ int c = x - 'a'; if(trie[u].nxt[c] == -1){ trie[u].nxt[c] = trie.size(); Node newnode; trie.push_back(newnode); } u = trie[u].nxt[c]; } ending[u] = true; } vector <string> ans(26); void dfs(int u, int r) { if(ending[u]) ans[r] += 'P'; for(int i = 0; i < 26; i++){ if(trie[u].nxt[i] != -1){ ans[r] += i + 'a'; dfs(trie[u].nxt[i],r); } } ans[r] += '-'; } int main() { ios::sync_with_stdio(false); cin.tie(nullptr); int n; cin >> n; for(int i = 0; i < n; i++){ string s; cin >> s; Insert(s); } vector <int> cnt(26); for(int i = 0; i < 26; i++){ if(trie[0].nxt[i] != -1){ ans[i].push_back(i + 'a'); dfs(trie[0].nxt[i], i); for(int j = ans[i].size()-1; j >= 0; j--){ if(ans[i][j] != '-'){ cnt[i] = ans[i].size()-j-1; break; } } } } int longest = 0; int sum = 0; for(int i = 0; i < 26; i++){ sum += ans[i].size(); if(cnt[longest] < cnt[i]) longest = i; } cout << sum-cnt[longest]<<"\n"; for(int i = 0; i < 26; i++){ if(i == longest) continue; for(int j = 0; j < ans[i].size(); j++) cout << ans[i][j] << "\n"; } for(int i = 0; i < ans[longest].size() - cnt[longest]; i++){ cout << ans[longest][i] << "\n"; } 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...