Submission #803271

#TimeUsernameProblemLanguageResultExecution timeMemory
803271UmairAhmadMirzaType Printer (IOI08_printer)C++17
90 / 100
1022 ms113332 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<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--; } cout<<sz<<endl; for(auto i:ans) cout<<i<<endl; return 0; }

Compilation message (stderr)

printer.cpp: In function 'void add()':
printer.cpp:19:9: warning: comparison of integer expressions of different signedness: 'int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   19 |  while(i<s.length()){
      |        ~^~~~~~~~~~~
#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...