#include <bits/stdc++.h>
using namespace std;
const int LIM = 20 * 25000;
array<int, 26> g[LIM];
int a[LIM], b[LIM], w = 0, j = 0;
pair<int, string> mx = {0, ""};
void dfs(int u){
while(a[u]--) cout << "P\n";
if(u == w) exit(0);
for(int i=0; i<26; ++i){
if(!g[u][i] || g[u][i] == b[u]) continue;
cout << char('a' + i) << '\n';
dfs(g[u][i]);
cout << "-\n";
}
if(!b[u]) return;
cout << mx.second[j++] << '\n';
dfs(b[u]);
cout << "-\n";
}
signed main(){
cin.tie(0)->sync_with_stdio(0);
int n, e = 0; cin >> n;
for(int i=0; i<n; ++i){
string s; cin >> s;
mx = max(mx, {s.size(), s});
int u = 0;
for(char c : s){
if(!g[u][c-'a']) g[u][c-'a'] = ++e;
u = g[u][c-'a'];
}
++a[u];
}
for(char c : mx.second)
b[w] = g[w][c-'a'], w = b[w];
cout << 2*e - mx.first + n << '\n';
dfs(0);
}
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
332 KB |
Output is correct |
2 |
Correct |
1 ms |
332 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
332 KB |
Output is correct |
2 |
Correct |
1 ms |
332 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
332 KB |
Output is correct |
2 |
Correct |
1 ms |
332 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
332 KB |
Output is correct |
2 |
Correct |
1 ms |
332 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
332 KB |
Output is correct |
2 |
Correct |
2 ms |
716 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
2 ms |
972 KB |
Output is correct |
2 |
Correct |
3 ms |
1228 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
11 ms |
3060 KB |
Output is correct |
2 |
Correct |
18 ms |
6144 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
18 ms |
7244 KB |
Output is correct |
2 |
Correct |
7 ms |
1740 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
46 ms |
17792 KB |
Output is correct |
2 |
Correct |
94 ms |
40644 KB |
Output is correct |
3 |
Correct |
55 ms |
20980 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
37 ms |
13892 KB |
Output is correct |
2 |
Correct |
113 ms |
48404 KB |
Output is correct |
3 |
Correct |
60 ms |
23712 KB |
Output is correct |
4 |
Correct |
96 ms |
45636 KB |
Output is correct |