Submission #226409

#TimeUsernameProblemLanguageResultExecution timeMemory
226409inluminasType Printer (IOI08_printer)C++14
80 / 100
1095 ms49196 KiB
#include<bits/stdc++.h> using namespace std; const int lmt=1e6; int adj[lmt][26]; bool vis[lmt]; int depth[lmt];//int subtree[lmt]; int indx=1; int cnt=0; string ans; string s; void insert() { int now=1; for(char c:s) { int num=c-'a'; if(adj[now][num]==0) { indx++; adj[now][num]=indx; now=indx; } else { now=adj[now][num]; } } vis[now]=1; } /*void getsubtree(int u) { subtree[u]=1; for(int i=0;i<26;i++) { if(adj[u][i]!=0) { int v=adj[u][i]; getsubtree(v); subtree[u]+=subtree[v]; } } }*/ void getdepth(int u) { depth[u]=1; for(int i=0;i<26;i++) { if(adj[u][i]!=0) { getdepth(adj[u][i]); depth[u]=max(depth[u],depth[adj[u][i]]+1); } } } void dfs(int u) { if(vis[u]) { vis[u]=0; ans+='P'; } int sz=0; vector<pair<int,int>>p; for(int i=0;i<26;i++) { if(adj[u][i]!=0) { sz++; p.push_back(make_pair(depth[adj[u][i]],i)); } } sort(p.begin(),p.end()); for(int i=0;i<sz;i++) { char c='a'+p[i].second; ans+=c; dfs(adj[u][p[i].second]); } ans+='-'; } int main() { //#ifndef ONLINE_JUDGE // freopen("take.in","r",stdin); // freopen("give.out","w",stdout); //#endif int n; cin>>n; for(int i=1;i<=n;i++) { cin>>s; insert(); } getdepth(1); dfs(1); reverse(ans.begin(),ans.end()); while(ans[0]=='-') ans.erase(ans.begin()); reverse(ans.begin(),ans.end()); cout<<ans.size()<<endl; for(char c:ans) cout<<c<<endl; }
#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...