Submission #1135809

#TimeUsernameProblemLanguageResultExecution timeMemory
1135809mardehieloType Printer (IOI08_printer)C++20
100 / 100
101 ms51792 KiB
#include <bits/stdc++.h> using namespace std; using ll= long long; using ld= long double; using pll=pair<ll, ll>; using pii=pair<int, int>; #define inf INT_MAX/2 #define pb push_back #define all(v) v.begin(), v.end() #define allr(v) v.rbegin(), v.rend() # define PI acos(-1) # define fst first # define snd second const int N=1e6+8; const int ALPHA=26; int n_nodes=0; string ans=""; int n, print=0; int trie[N][ALPHA]; bool word[N]; int depth[N]; void insert(string s){ int node=0; for(char it: s){ if(trie[node][it-'a']==0){ n_nodes++; trie[node][it-'a']=n_nodes; } node=trie[node][it-'a']; } word[node]=1; // aqui termina una palabra } void dfs(int u){ for(int i=0; i<26; ++i){ int v=trie[u][i]; if(v==0) continue; dfs(v); depth[u]=max(depth[u], depth[v]); } depth[u]++; } void go(int u){ vector<pii> son; if(word[u]){ ans+='P'; print++; if(print==n) return; } for(int i=0; i<26; ++i){ int v=trie[u][i]; if(v==0) continue; son.pb({v, i}); //es hijo de u, i es el caracter que agrego } sort(all(son), [&](pii x, pii y){ return depth[x.fst]<depth[y.fst]; }); for(auto& [v,i]: son){ ans+=(char)(i+'a'); go(v); if(print!=n) ans+="-"; } } int main(){ ios_base::sync_with_stdio(0); cin.tie(0); cin>>n; vector<string> v(n); for(int i=0; i<n; ++i){ cin>>v[i]; insert(v[i]); } dfs(0); go(0); cout<<ans.size()<<'\n'; for(auto&t: ans) cout<<t<<'\n'; return 0; }
#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...