#include <bits/stdc++.h>
using namespace std;
const int maxn = 25005;
int n;
string s[maxn];
int maxl, in, prekl[maxn];
vector <string> red;
vector <char> ispis;
int main (void){
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
cin >> n;
for (int i = 0; i < n; i++){
cin >> s[i];
}
sort(s, s + n);
for (int i = 0; i < n; i++){
if (s[i].size() > maxl){
maxl = s[i].size();
in = i;
}
if (i > 0){
int br = 0;
for (int j = 0; j < min(s[i].size(), s[i - 1].size()); j++){
if (s[i][j] != s[i - 1][j]) break;
br++;
}
prekl[i] = br;
}
//cout << s[i] << " " << prekl[i] << endl;
}
int l = in, r = in;
red.push_back(s[in]);
for (int i = max(prekl[in + 1], prekl[in]); i >= 1; i--){
while (l > 0 and prekl[l] >= i){
l--;
red.push_back(s[l]);
}
while (r < n - 1 and prekl[r + 1] >= i){
r++;
red.push_back(s[r]);
}
}
for (int i = 0; i < l; i++) red.push_back(s[i]);
for (int i = r + 1; i < n; i++) red.push_back(s[i]);
reverse(red.begin(), red.end());
string prosli = "";
for (int i = 0; i < n; i++){
int pref = 0;
for (int j = 0; j < min(prosli.size(), red[i].size()); j++){
if (prosli[j] != red[i][j]) break;
pref++;
}
for (int j = 0; j < int(prosli.size()) - pref; j++) ispis.push_back('-');
for (int j = pref; j < red[i].size(); j++) ispis.push_back(red[i][j]);
ispis.push_back('P');
prosli = red[i];
}
cout << ispis.size() << "\n";
for (int i = 0; i < ispis.size(); i++) cout << ispis[i] << "\n";
return 0;
}
# | 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... |