#include <bits/stdc++.h>
// Author: Kazuki_Will_Win_VOI_8703
#define fi first
#define se second
#define pii pair<int, int>
#define all(a) a.begin(), a.end()
using namespace std;
const int mn = 1e6 + 5, mod = 998244353;
int n, ans[mn], ed[mn], on[mn], child[mn][26], cnt = 0, Yuzuki = 0;
string res;
string s[mn];
vector <int> pos[mn];
void add(string a, int id){
int u = 0;
for(auto c : a){
int v = c - 'a';
if(!child[u][v]) child[u][v] = ++cnt;
u = child[u][v];
}
ed[u] ++;
}
void go(string a){
int u = 0;
for(auto c : a){
int v = c - 'a';
u = child[u][v];
on[u] = 1;
}
}
void dfs(int u, int del){
for(int i = 1; i <= ed[u]; i++) res += 'P';
if(del){
int id = 0, num = 0;
for(int i = 0; i < 26; i++){
int v = child[u][i];
if(!v) continue;
if(on[v]){ id = v; num = i; continue; }
res += char(97 + i);
dfs(v, 0);
res += '-';
}
if(id > 0){
res += char(97 + num);
dfs(id, 1);
}
}
else{
for(int i = 0; i < 26; i++){
int v = child[u][i];
if(!v) continue;
res += char(97 + i);
dfs(v, 0);
res += '-';
}
}
}
void solve(){
cin >> n;
int max_val = 0, id = 0;
for(int i = 1; i <= n; i++){
cin >> s[i];
add(s[i], i);
if(s[i].size() > s[id].size()) id = i;
}
go(s[id]);
dfs(0, 1);
cout << res.size() << '\n';
for(auto c : res) cout << c << '\n';
}
signed main(){
ios::sync_with_stdio(false);
cin.tie(nullptr);
cout.tie(nullptr);
int t = 1;
// cin >> t;
while(t--) solve();
}
# | 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... |