Submission #1295168

#TimeUsernameProblemLanguageResultExecution timeMemory
1295168talyType Printer (IOI08_printer)C++20
100 / 100
378 ms108576 KiB
#include <bits/stdc++.h>
using namespace std;
#define lli long long
#define pii pair<lli, lli>
#define tii tuple<lli, lli, lli>
#define ff first
#define ss second
#define pb push_back
#define endl '\n'
struct Trie{
    map<char, Trie> children;
    bool is_word=false;
    // int mais_longa=0;

    void insert(const string & s, int pos){
        if(pos!=s.size()){
            children[s[pos]].insert(s, pos+1);
        }
        else {
            // children[s[pos]].ss=1;
            is_word=true;
        }
    }
};

Trie trie;
vector<char> resp;
string last_word="";

void solve(Trie t, int pos, bool last){
    // char letra='a';
    // int maior=0;
    if(t.is_word){
        resp.pb('P');
    }
    pair<char, Trie> ult;
    ult.ff='-';
    for(auto [c, p]:t.children){
        if(last&&last_word[pos]==c){
            ult={c, p};
            continue;
        }else{
            resp.pb(c);
            solve(p, pos+1, 0);
            resp.pb('-');
        }
    }
    if(ult.ff!='-'){
        resp.pb(ult.ff);
        solve(ult.ss, pos+1, 1);
    }
}

int main() {
    int n; cin >> n;
    vector<string> words;
    for(int i=0; i<n; i++){
        string s; cin >> s;
        words.pb(s);
        trie.insert(s, 0);
        if(last_word.size()<s.size()){
            last_word=s;
        }
    }
    solve(trie, 0, 1);
    cout<<resp.size()<<endl;
    for(char i:resp){
        cout<<i<<endl;
    }
}
#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...