#include<bits/stdc++.h>
#define IOS ios_base::sync_with_stdio(false);cin.tie();cout.tie();
#define all(x) x.begin(), x.end()
#define int long long
#define pq priority_queue
#define eb emplace_back
#define lb lower_bound
#define ub upper_bound
#define pb push_back
#define pp pop_back
#define F first
#define S second
using namespace std;
string mx;
bool cmp(string &a, string &b){
for(int i = 0 ;i < a.size() && i < b.size(); i++) {
if (a[i] == b[i]) continue ;
if (a[i] == mx[i]) return 0;
if (b[i] == mx[i]) return 1;
return (a[i] < b[i]);
}
return a.size() < b.size();
}
void solve () {
int n; cin >> n;
vector<string> v;
for (int i = 0; i < n; i++) {
string s; cin >> s;
v.pb(s);
if (s.size() > mx.size()) mx = s;
}
sort(all(v), cmp);
string ans;
for (int i = 0; i < v.size(); i++) {
int l = 0;
if (i) while (l < v[i].size() && l < v[i-1].size() && v[i][l] == v[i-1][l]) l++;
if (i) for (int j = v[i-1].size(); j > l; j--) ans += '-';
for (int j = l; j < v[i].size(); j++) ans += v[i][j];
ans += 'P';
}
cout << ans.size() << '\n';
for (auto i: ans) cout << i << '\n';
}
signed main() {IOS solve(); 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... |