제출 #1177340

#제출 시각아이디문제언어결과실행 시간메모리
1177340rubyscarletType Printer (IOI08_printer)C++20
0 / 100
49 ms30292 KiB
#include <bits/stdc++.h> using namespace std; #define ll long long #define el "\n" #define crispy \ ios_base::sync_with_stdio(0); \ cin.tie(0); \ cout.tie(0); int n; int nn = 0; struct Node { bool end = 0; int count = 0; int arr[26]{}; int rem = -1; }; vector<Node> trie(1); void buildTrie(string &s) { int cur = 0; for (int i = 0; i < s.size(); i++) { int temp = s[i] - 'a'; if (!trie[cur].arr[temp]) { trie[cur].arr[temp] = trie.size(); trie.emplace_back(); } cur = trie[cur].arr[temp]; trie[cur].count++; trie[cur].rem = max(trie[cur].rem,int(s.size() - i)); } trie[cur].end = 1; } void trieTraversal(int cur = 0){ if(trie[cur].end) nn--,cout<<"P"<<el; vector<pair<int,pair<int,int>>>idRem; for(int i = 0; i < 26; i++){ if(~trie[trie[cur].arr[i]].rem){ idRem.push_back({trie[trie[cur].arr[i]].rem,{i,trie[cur].arr[i]}}); } } sort(idRem.begin(),idRem.end()); for(auto it : idRem){ cout<<char(it.second.first +'a')<<el; trieTraversal(it.second.second); if(nn) cout<<'-'<<el; } } void scarlet() { cin>>n; nn=n; for(int i = 0 ; i < n;i++){ string s; cin>>s; buildTrie(s); } trieTraversal(); } int main() { // crispy ; int t = 1; // cin >> t; while (t--) { scarlet(); } }
#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...