#include <bits/stdc++.h>
#define exoworldgd cin.tie(0)->sync_with_stdio(0),cout.tie(0)
using namespace std;
int n,sum=0,temp;
string curr,w[25005],s;
int cnt(string a, string b) {
int i=0;
while (i < min(a.size(),b.size()) && a[i]==b[i]) i++;
return i;
}
bool cmp(string a, string b) {
int x = cnt(a,s), y = cnt(b,s);
if (a == s) return 0;
if (b == s) return 1;
return x^y ? x<y:a<b;
}
signed main(void) {
exoworldgd;
cin >> n;
for (int i = 0; i < n; i++) {
cin >> w[i];
if (w[i].size() > s.size()) s = w[i];
}
sort(w,w+n,cmp);
for (int i = 0; i < n; i++) temp = cnt(curr,w[i]), sum += curr.size()-temp+w[i].size()-temp+1, curr = w[i];
cout << sum << '\n', curr="";
for (int i = 0; i < n; i++) {
temp = cnt(curr,w[i]);
for (int j = curr.size()-1; j >= temp; j--) cout << "-\n";
for (int j = temp; j < w[i].size(); j++) cout << w[i][j] << '\n';
cout << "P\n", curr=w[i];
}
}
| # | 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... |