#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
#define FOR(i,N) for(ll i = 0; i < N; i++)
#define all(x) (x).begin(), (x).end()
#define F first
#define S second
string longest = "";
bool cmp(string &a, string &b) {
for(ll i = 0; i < b.size(); i++) {
if (a.size() == i) return 1;
if (a[i] != b[i]) {
if (a[i] == longest[i]) return 0;
if (b[i] == longest[i]) return 1;
return a[i] < b[i];
}
}
return 0;
}
signed main() {
cin.tie(0); ios::sync_with_stdio(false);
ll N;
cin >> N;
vector<string> s;
FOR(i, N) {
string _;
cin >> _;
s.push_back(_);
if (_.size() > longest.size()) longest = _;
}
sort(all(s), cmp);
vector<char> res;
string cur = "";
FOR(i, N) {
while(cur != s[i].substr(0, cur.size())) {
res.push_back('-');
cur.pop_back();
}
while(cur != s[i]) {
res.push_back(s[i][cur.size()]);
cur += s[i][cur.size()];
}
res.push_back('P');
}
cout << res.size() << endl;
FOR(i, res.size()) cout << res[i] << endl;
}
# | 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... |