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