Submission #1196634

#TimeUsernameProblemLanguageResultExecution timeMemory
1196634nikolashamiType Printer (IOI08_printer)C++20
30 / 100
89 ms81340 KiB
#include<bits/stdc++.h> using namespace std; using ll=long long; #define pb push_back const ll N=5e5+1; ll ch[N][26],term[N],nd=1; vector<char>ans; void ins(string s){ ll u=1; for(char&c:s){ ll x=c-'a'; if(!ch[u][x])ch[u][x]=++nd; u=ch[u][x]; } term[u]=1; } void dfs(ll u,ll sl){ if(sl!=-1)ans.pb(sl+'a'); if(term[u])ans.pb('P'); for(int i=0;i<26;++i){ if(ch[u][i])dfs(ch[u][i],i); } if(u!=1)ans.pb('-'); } signed main(){ ios::sync_with_stdio(0); cin.tie(0); ll n;cin>>n; while(n--){ string s; cin>>s; ins(s); } dfs(1,-1); n=ans.size(); ll sz=0,len=0,mx=-1,id=-1; for(int i=0;i<n;++i){ sz+=(ans[i]=='-'?-1:(ans[i]!='P')); if(ans[i]=='-')++len; else len=0; if(!sz){ if(len>mx){ mx=len; id=i; } } } vector<char>ans2=ans; if(id!=-1){ ans2.clear(); for(int i=id+1;i<n;++i) ans2.push_back(ans[i]); for(int i=0;i<=id;++i) ans2.push_back(ans[i]); } while(ans2.size()&&ans2.back()=='-') ans2.pop_back(); cout<<ans2.size()<<'\n'; for(char&c:ans2) cout<<c<<'\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...