#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;
};
queue<char>ans;
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--,ans.emplace('P');
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){
ans.emplace(char(it.second.first +'a'));
trieTraversal(it.second.second);
if(nn)
ans.emplace('-');
}
}
void scarlet()
{
cin>>n;
nn=n;
for(int i = 0 ; i < n;i++){
string s;
cin>>s;
buildTrie(s);
}
trieTraversal();
cout<<ans.size()<<el;
while(!ans.empty()){
cout<<ans.front()<<el;
ans.pop();
}
}
int main()
{
// crispy ;
int t = 1;
// cin >> t;
while (t--)
{
scarlet();
}
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |