Submission #1224769

#TimeUsernameProblemLanguageResultExecution timeMemory
1224769akmuhammet_sType Printer (IOI08_printer)C++20
100 / 100
118 ms49824 KiB
#include<bits/stdc++.h> using namespace std; int tree[650130][26],x=1,mx[650130]; bool B[650130]; int sz; string s; vector<char> ans; void in(int nd,int id){ if(id==s.size()){ B[nd]=true; mx[nd]=max(mx[nd],sz); return; } if(!tree[nd][s[id]-'a']) tree[nd][s[id]-'a']=x++; in(tree[nd][s[id]-'a'],id+1); mx[nd]=max(mx[nd],sz); } void out(int nd){ if(B[nd]){ ans.push_back('P'); } vector<pair<int,int> > p; for(int i=0; i<26; i++){ if(tree[nd][i]){ p.push_back({mx[tree[nd][i]],i}); } } sort(p.begin(),p.end()); for(int i=0; i<p.size(); i++){ ans.push_back(char(p[i].second+97)); out(tree[nd][p[i].second]); ans.push_back('-'); } } int main(){ int n; cin>>n; for(int i=0; i<n; i++){ cin>>s; sz=s.size(); in(0,0); } out(0); while(ans[ans.size()-1]=='-'){ ans.pop_back(); } cout<<ans.size()<<'\n'; for(int i=0; i<ans.size(); i++){ cout<<ans[i]<<"\n"; } }
#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...