Submission #1210256

#TimeUsernameProblemLanguageResultExecution timeMemory
1210256WarinchaiType Printer (IOI08_printer)C++20
0 / 100
57 ms62024 KiB
#include<bits/stdc++.h> using namespace std; string s[25005]; struct node{ node *to[30]; int l[30]; int ll; int cnt; node(){ for(int i=0;i<30;i++)to[i]=NULL,l[i]=0; cnt=0; ll=0; } }; typedef node* pnode; pnode rt=NULL; vector<char>ans; int tot=0; int n; int dfsl(pnode x){ int mx=0; for(int i=0;i<26;i++){ if(x->to[i]){ x->l[i]=dfsl(x->to[i]); if(x->l[i]>x->l[x->ll])x->ll=i; mx=max(mx,x->l[i]); } } return mx+1; } void dfs(pnode x){ for(int i=0;i<x->cnt;i++)cout<<"P\n",tot++; for(int i=0;i<26;i++){ if(i==x->ll)continue; if(x->to[i]){ cout<<(char)(i+'a')<<"\n"; dfs(x->to[i]); cout<<"-\n"; } } if(x->to[x->ll]){ cout<<(char)(x->ll+'a')<<"\n"; dfs(x->to[x->ll]); if(tot!=n)cout<<"-\n"; } } int main(){ ios_base::sync_with_stdio(false); cin.tie(0); cin>>n; for(int i=1;i<=n;i++)cin>>s[i]; pnode rt=new node(); for(int i=1;i<=n;i++){ string temp=s[i]; pnode cur=rt; for(char x:temp){ int val=x-'a'; if(!cur->to[val])cur->to[val]=new node(); cur=cur->to[val]; } cur->cnt++; } dfsl(rt); dfs(rt); }
#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...