#include <bits/stdc++.h>
using namespace std;
const int mxc = 26;
struct trie {
trie *chi[mxc];
int len;
int cnt;
int las;
trie() {
cnt = 0;
for(int i = 0; i < mxc; i++)
chi[i] = NULL;
len = 0;
}
};
void maxer(int &MAX, int CMP) { if(MAX < CMP) MAX = CMP; }
void insert(trie *root, string s) {
for(char c : s) {
if(root->chi[c - 'a'] == NULL)
root->chi[c - 'a'] = new trie();
maxer(root->len, s.size());
root = root->chi[c - 'a'];
}
root->len = s.size();
root->cnt++;
}
trie *root = new trie();
vector<char> ans;
void dfs(trie *cur) {
for(int i = 0; i < mxc; i++) {
trie *nxt = cur->chi[i];
if(nxt == NULL) continue;
dfs(nxt);
maxer(cur->len, nxt->len);
}
}
void solve(trie *cur) {
while(cur->cnt) {
ans.push_back('P');
cur->cnt--;
}
for(int i = 0; i < mxc; i++) {
if(cur->chi[i] == NULL) continue;
if(cur->chi[i]->len == cur->len) continue;
ans.push_back('a' + i);
solve(cur->chi[i]);
ans.push_back('-');
}
for(int i = 0; i < mxc; i++) {
if(cur->chi[i] == NULL) continue;
if(cur->chi[i]->len != cur->len) continue;
ans.push_back('a' + i);
solve(cur->chi[i]);
ans.push_back('-');
}
}
int main() {
cin.tie(0)->sync_with_stdio(0);
int n;
cin >> n;
for(int i = 0; i < n; i++) {
string s;
cin >> s;
insert(root, s);
}
// dfs(root);
solve(root);
while(ans.back() != 'P')
ans.pop_back();
cout << ans.size() << endl;
for(char c : ans)
cout << c << endl;
return 0;
}
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
336 KB |
Output is correct |
2 |
Correct |
1 ms |
504 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
336 KB |
Output is correct |
2 |
Correct |
1 ms |
336 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
508 KB |
Output is correct |
2 |
Correct |
1 ms |
336 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
2 ms |
336 KB |
Output is correct |
2 |
Correct |
1 ms |
336 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Incorrect |
2 ms |
592 KB |
Output isn't correct |
2 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
20 ms |
1872 KB |
Output is correct |
2 |
Incorrect |
26 ms |
2384 KB |
Output isn't correct |
3 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
75 ms |
6472 KB |
Output is correct |
2 |
Correct |
165 ms |
13360 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
199 ms |
15616 KB |
Output is correct |
2 |
Correct |
65 ms |
3408 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
486 ms |
38880 KB |
Output is correct |
2 |
Execution timed out |
1066 ms |
89020 KB |
Time limit exceeded |
3 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
444 ms |
30472 KB |
Output is correct |
2 |
Execution timed out |
1066 ms |
105696 KB |
Time limit exceeded |
3 |
Halted |
0 ms |
0 KB |
- |