Submission #803274

#TimeUsernameProblemLanguageResultExecution timeMemory
803274UmairAhmadMirzaType Printer (IOI08_printer)C++17
0 / 100
86 ms41092 KiB
#include <bits/stdc++.h> using namespace std; int const N=1e5+5; struct node { char ch; map<char,node*> mp; set<pair<int,node*>> adj; int dep=1; int cnt=0; }; node* root; void add(){ string s; cin>>s; int i=0; node* cur=root; while(i<int(s.length())){ if(cur->mp[s[i]]==NULL){ cur->mp[s[i]]=new node(); cur->mp[s[i]]->ch=s[i]; } cur=cur->mp[s[i]]; i++; } cur->cnt++; } int dep_set(node* rt){ for(auto i:rt->mp){ rt->dep=max(rt->dep,dep_set(i.second)+1); rt->adj.insert({i.second->dep,i.second}); } return rt->dep; } vector<char> ans; void dfs1(node* rt){ for (int i = 0; i < rt->cnt; ++i) ans.push_back('P'); for(auto i:rt->adj){ ans.push_back(i.second->ch); dfs1(i.second); ans.push_back('-'); } } int main(){ int t; cin>>t; root=new node(); for (int i = 0; i < t; ++i) add(); dep_set(root); dfs1(root); int sz=ans.size(); while(sz>0&&ans[sz-1]=='-'){ ans.pop_back(); sz--; } printf("%d",sz); for(char i:ans) printf("%c",i); 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...