Submission #1171113

#TimeUsernameProblemLanguageResultExecution timeMemory
1171113mousebeaverType Printer (IOI08_printer)C++20
10 / 100
45 ms40676 KiB
#define ll long long #define subINF numeric_limits<ll>::min()/2 #define pll pair<ll, ll> #define ppl pair<pll, ll> #define BITS 32 #include <bits/stdc++.h> using namespace std; void dfs(vector<bool>& mark, vector<vector<ll>>& trie, vector<char>& output, ll node) { if(mark[node]) output.push_back('P'); for(ll i = 0; i < 26; i++) { if(trie[node][i] != -1) { output.push_back((char) (((int) 'a') + i)); dfs(mark, trie, output, trie[node][i]); } } output.push_back('-'); } int main() { ios::sync_with_stdio(false); cin.tie(0); ll n; cin>>n; vector<vector<ll>> trie(1, vector<ll> (26, -1)); vector<bool> mark(1, false); for(ll i = 0; i < n; i++) { string s; cin>>s; ll k = 0; for(char c : s) { int ind = (int) c - (int) 'a'; if(trie[k][ind] == -1) { trie[k][ind] = trie.size(); mark.push_back(false); trie.push_back({}); trie.back().assign(26, -1); } k = trie[k][ind]; } mark[k] = true; } vector<char> output(0); dfs(mark, trie, output, 0); while(output.back() == '-') output.pop_back(); cout<<output.size()<<"\n"; for(char c : output) 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...