# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
739895 | Desh03 | Type Printer (IOI08_printer) | C++17 | 186 ms | 83260 KiB |
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
using namespace std;
struct node {
node* c[26] = {NULL};
bool endofword;
int sz;
node(bool x) : endofword(x) { };
};
vector<char> ans;
struct trie {
node* root;
trie() : root(NULL) { };
void insert(node* &u, int id, string &s) {
if (u == NULL) u = new node(false);
if (id == s.size()) {
u->endofword = true;
return;
}
insert(u->c[s[id] - 'a'], id + 1, s);
}
void dfs1(node* &u) {
u->sz = 1;
for (int i = 0; i < 26; i++)
if (u->c[i] != NULL)
dfs1(u->c[i]), u->sz += u->c[i]->sz;
}
void dfs2(node* u) {
if (u->endofword) ans.push_back('P');
vector<int> f(26);
for (int i = 0; i < 26; i++) f[i] = i;
sort(f.begin(), f.end(), [&](int a, int b) {
int x = u->c[a] == NULL ? 0 : u->c[a]->sz, y = u->c[b] == NULL ? 0 : u->c[b]->sz;
return x < y;
});
for (int i : f)
if (u->c[i] != NULL) {
ans.push_back('a' + i);
dfs2(u->c[i]);
}
ans.push_back('-');
}
void insert(string s) {
insert(root, 0, s);
}
};
signed main() {
ios_base::sync_with_stdio(false);
cin.tie(0);
int n;
cin >> n;
trie tr;
for (int i = 0; i < n; i++) {
string s;
cin >> s;
tr.insert(s);
}
tr.dfs1(tr.root);
tr.dfs2(tr.root);
while (ans.back() == '-') ans.pop_back();
cout << ans.size() << '\n';
for (char c : ans) cout << c << '\n';
}
Compilation message (stderr)
# | 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... |