Submission #1268232

#TimeUsernameProblemLanguageResultExecution timeMemory
1268232smtyonType Printer (IOI08_printer)C++20
0 / 100
36 ms28820 KiB
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define SMTYON ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
#define hi cerr<<"HI\n";
/*                        ->    NO CLEAN CODE HERE    <-                        */

struct Node {
    bool isEnd = false;
    int adj[26]{};
    Node() { memset(adj, 0, sizeof adj); }
};

class Trie {
public:
    vector<Node> h;
    Trie() { h.emplace_back(); }

    void insert(const string &s) {
        int node = 0;
        for (char c : s) {
            int id = c - 'a';
            if (!h[node].adj[id]) {
                h[node].adj[id] = h.size();
                h.emplace_back();
            }
            node = h[node].adj[id];
        }
        h[node].isEnd = true;
    }

    void dfs(int u, vector<char> &ops) {
        if (h[u].isEnd) ops.push_back('P');
        for (int c = 0; c < 26; c++) {
            if (h[u].adj[c]) {
                ops.push_back('a' + c);
                dfs(h[u].adj[c], ops);
                ops.push_back('-');
            }
        }
    }
};

signed main() {
    /* ^^^ */
    SMTYON /* ^^^ */
    //    ->> practice makes perfect
    int N;
    cin >> N;
    Trie t;
    vector<string> words(N);
    for (int i = 0; i < N; i++) {
        cin >> words[i];
        t.insert(words[i]);
    }

    vector<char> ops;
    t.dfs(0, ops);
    cout << ops.size() << "\n";
    for (char c : ops) cout << c << "\n";

}
#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...