# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
696474 | _martynas | Type Printer (IOI08_printer) | C++11 | 130 ms | 101532 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;
int n;
vector<char> coms;
struct Trie
{
Trie* A[26] = {};
bool end = false;
void add(string& s, int i)
{
if(i == s.size()) {
end = true;
return;
}
if(!A[s[i]-'a']) {
A[s[i]-'a'] = new Trie();
}
A[s[i]-'a']->add(s, i+1);
}
void solve(string s, int i, bool main_branch)
{
if(main_branch && i < s.size()) {
A[s[i]-'a']->solve(s, i+1, true);
coms.push_back(s[i]);
}
for(int j = 0; j < 26; j++) {
if(A[j] && (!main_branch || j != s[i]-'a')) {
coms.push_back('-');
A[j]->solve(s, i+1, false);
coms.push_back(char(j+'a'));
}
}
if(end) {
coms.push_back('P');
}
}
} trie;
int main()
{
ios::sync_with_stdio(0);
cin.tie(0);
cin >> n;
vector<string> A(n);
for(int i = 0; i < n; i++) cin >> A[i];
sort(A.begin(), A.end(),
[&](string& a, string& b)
{
return a.size() > b.size();
});
for(int i = 0; i < n; i++) {
trie.add(A[i], 0);
}
cerr << "Finished adding\n";
trie.solve(A[0], 0, true);
reverse(coms.begin(), coms.end());
cout << coms.size() << "\n";
for(char c : coms) {
cout << c << "\n";
}
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... |