Submission #935215

# Submission time Handle Problem Language Result Execution time Memory
935215 2024-02-28T20:15:29 Z asdasdqwer Type Printer (IOI08_printer) C++14
20 / 100
41 ms 37836 KB
#include <bits/stdc++.h>
using namespace std;

struct Node {
    char l;
    map<char,int> child;
};

vector<Node> trie(500001);
int last = 1;

void insWord(string &s) {
    int idx = 0;
    for (auto &x:s) {
        if (trie[idx].child.find(x) == trie[idx].child.end()) {
            trie[idx].child[x] = last;
            trie[last].l = x;
            last++;
        }
        idx = trie[idx].child[x];
    }
}

struct Operation {
    char chr;
    bool isPrint = false;
    bool isBack = false;
};

vector<Operation> out;

void traversal(int index) {
    bool foundOne = false;
    for (auto [chr, idx]:trie[index].child) {
        Operation op;op.chr = chr;
        out.push_back(op);
        traversal(idx);
        op.isBack = true;
        out.push_back(op);
        foundOne = true;
    }

    if (!foundOne) {
        Operation op;op.isPrint=true;
        out.push_back(op);
    }
}

signed main() {
    ios::sync_with_stdio(false);
    cin.tie(0);

    int n;cin>>n;
    vector<string> v(n);
    for (auto &x:v)cin>>x;
    trie[0].l = ' ';

    for (auto x:v) {
        insWord(x);
    }
    
    string s = "";
    for (auto &x:v) {
        if (x.size() > s.size()) {
            s = x;
        }
    }

    int index = 0;
    for (auto &x:s) {
        int nxt;
        for (auto [chr, idx] : trie[index].child) {
            if (chr != x) {
                Operation op;op.chr=chr;
                out.push_back(op);
                traversal(idx);
                op.isBack = true;
                out.push_back(op);
            }

            else {
                nxt = idx;
            }
        }

        Operation op;op.chr=x;
        out.push_back(op);
        index = nxt;
    }

    Operation op;op.isPrint=true;
    out.push_back(op);

    cout<<out.size()<<"\n";
    for (auto &x:out) {
        if (x.isBack) {
            cout<<"-\n";
        }

        else if (x.isPrint) {
            cout<<"P\n";
        }

        else {
            cout<<x.chr<<"\n";
        }
    }
}

Compilation message

printer.cpp: In function 'void traversal(int)':
printer.cpp:34:15: warning: structured bindings only available with '-std=c++17' or '-std=gnu++17'
   34 |     for (auto [chr, idx]:trie[index].child) {
      |               ^
printer.cpp: In function 'int main()':
printer.cpp:72:19: warning: structured bindings only available with '-std=c++17' or '-std=gnu++17'
   72 |         for (auto [chr, idx] : trie[index].child) {
      |                   ^
printer.cpp:72:42: warning: 'nxt' may be used uninitialized in this function [-Wmaybe-uninitialized]
   72 |         for (auto [chr, idx] : trie[index].child) {
      |                                          ^
# Verdict Execution time Memory Grader output
1 Correct 7 ms 27736 KB Output is correct
2 Correct 6 ms 27740 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 7 ms 27736 KB Output is correct
2 Correct 6 ms 27740 KB Output is correct
# Verdict Execution time Memory Grader output
1 Incorrect 7 ms 27736 KB didn't print every word
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 6 ms 27740 KB Output is correct
2 Incorrect 7 ms 27740 KB didn't print every word
3 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 8 ms 27740 KB didn't print every word
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 8 ms 28252 KB didn't print every word
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 11 ms 29472 KB didn't print every word
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 19 ms 31836 KB didn't print every word
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 41 ms 37836 KB didn't print every word
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 36 ms 36048 KB didn't print every word
2 Halted 0 ms 0 KB -