#include<bits/stdc++.h>
using namespace std;
string ls = "";
bool comp(string a, string b){
int x = 0;
while (true){
if (x == a.size()) return 1;
if (x == b.size()) return 0;
if (a[x] != b[x]){
if (a[x] == ls[x]) return 0;
if (b[x] == ls[x]) return 1;
return a[x] < b[x];
}
x++;
}
}
signed main(){
int n;
cin >> n;
vector<string> v;
for (int i=0; i<n; i++){
string s;
cin >> s;
v.push_back(s);
if (s.size() > ls.size()) ls = s;
}
sort(v.begin(), v.end(), comp);
vector<char> res;
string cs = "";
for (int i=0; i<n; i++){
while (cs != v[i].substr(0, cs.size())){
res.push_back('-');
cs.pop_back();
}
while (cs != v[i]){
res.push_back(v[i][cs.size()]);
cs += v[i][cs.size()];
}
res.push_back('P');
}
cout << res.size() << endl;
for (char c : res) cout << c << 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... |