# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
485950 | Alexandruabcde | Type Printer (IOI08_printer) | C++14 | 162 ms | 99516 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;
constexpr int SIGMAX = 26;
constexpr int NMAX = 25005;
struct Node {
Node *Next[SIGMAX];
int cnt;
int val;
Node () {
for (int i = 0; i < SIGMAX; ++ i )
Next[i] = nullptr;
val = 0;
cnt = 0;
}
};
Node *Trie = new Node;
void Add (Node *Tree, string cuv, int lit) {
if (lit == cuv.size()) {
Tree->val = max(Tree->val, (int)cuv.size());
Tree->cnt ++;
return;
}
int urm = cuv[lit]-'a';
if (Tree->Next[urm] == nullptr) {
Tree->Next[urm] = new Node;
Add(Tree->Next[urm], cuv, lit+1);
}
else Add(Tree->Next[urm], cuv, lit+1);
Tree->val = max(Tree->val, Tree->Next[urm]->val);
}
int N;
vector <char> Ans;
void Read () {
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
cin >> N;
for (int i = 1; i <= N; ++ i ) {
string S;
cin >> S;
Add(Trie, S, 0);
}
}
void FindAnswer (Node *Tree) {
for (int i = 0; i < Tree->cnt; ++ i )
Ans.push_back('P');
for (int i = 0; i < SIGMAX; ++ i ) {
if (Tree->Next[i] == nullptr || Tree->Next[i]->val == Tree->val) continue;
Ans.push_back(('a' + i));
FindAnswer(Tree->Next[i]);
Ans.push_back('-');
}
for (int i = 0; i < SIGMAX; ++ i ) {
if (Tree->Next[i] == nullptr || Tree->Next[i]->val < Tree->val) continue;
Ans.push_back(('a' + i));
FindAnswer(Tree->Next[i]);
Ans.push_back('-');
}
}
void Solve () {
FindAnswer(Trie);
while (Ans.size() > 0 && Ans.back() == '-') Ans.pop_back();
cout << Ans.size() << '\n';
for (int i = 0; i < Ans.size(); ++ i )
cout << Ans[i] << '\n';
}
int main () {
Read();
Solve();
return 0;
}
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... |