Submission #1312582

#TimeUsernameProblemLanguageResultExecution timeMemory
1312582algoproclubType Printer (IOI08_printer)C++20
100 / 100
100 ms62292 KiB
// UUID: 96a25cc1-e291-4669-9223-5e82ba9535dc
#include <bits/stdc++.h>
using namespace std;

vector<int> sam(26, 0);
vector<bool> e = {false};
vector<vector<int>> trie = {sam};
string lst, ans;

void add(string s) {
    if (lst.size() < s.size()) lst = s;
    int node = 0;
    for (char c : s) {
        int i = c - 'a';
        if (!trie[node][i]) {
            trie[node][i] = trie.size();
            trie.push_back(sam);
            e.push_back(false);
        }
        node = trie[node][i];
    }
    e[node] = true;
}

void dfs(int node, int lev, bool f) {
    if (e[node]) ans.push_back('P');
    for (int i = 0; i < 26; i++) {
        if (!trie[node][i]) continue;
        if (f && lst[lev] == i + 'a') continue;
        ans.push_back(i + 'a');
        dfs(trie[node][i], lev + 1, false);
    }
    if (f && lev == lst.size()) return;
    if (f) {
        ans.push_back(lst[lev]);
        dfs(trie[node][lst[lev] - 'a'], lev + 1, true);
    }
    else ans.push_back('-');
}

int main() {
    ios::sync_with_stdio(false);
    cin.tie(0); cout.tie(0);
    int n;
    cin >> n;
    while (n--) {
        string s;
        cin >> s;
        add(s);
    }
    dfs(0, 0, true);
    cout << ans.size() << "\n";
    for (char c : ans) cout << c << "\n";
    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...