Submission #522475

#TimeUsernameProblemLanguageResultExecution timeMemory
522475JesusType Printer (IOI08_printer)C++14
0 / 100
340 ms61876 KiB
#include <bits/stdc++.h> using namespace std; vector<char> ans; struct arbol{ char letra; int palabra_mayor; bool fin_palabra=false; int hijos[28]; }; int aux,desocupado=1; arbol raices[500002]; int dfs(int posicion){ int tam=0; for(int i=0;i<28;i++){ if(raices[posicion].hijos[i]!=0){ tam=max(dfs(raices[posicion].hijos[i]),tam); } } tam++; raices[posicion].palabra_mayor=tam; return tam; } void res(int pos, bool rama){ if(pos!=0) { ans.push_back(raices[pos].letra); } if(raices[pos].fin_palabra==true) { ans.push_back('P'); } int m=0; for(int i=0;i<28;i++){ if(raices[pos].hijos[i]!=0){ if(raices[raices[pos].hijos[i]].palabra_mayor==raices[pos].palabra_mayor-1&&m==0) m=i; else res(raices[pos].hijos[i],false); } } if(pos==0&&m!=0) res(raices[pos].hijos[m],true); else if(m!=0) res(raices[pos].hijos[m],rama); if(pos!=0&&rama==false) { ans.push_back('-'); } } int main() { ios_base::sync_with_stdio();cin.tie(0); int n; cin>>n; string palabra; for(int i=0;i<n;i++){ cin>>palabra; aux=0; for(char l:palabra){ if(raices[aux].hijos[l-'a']!=0) aux=raices[aux].hijos[l-'a']; else{ raices[aux].hijos[l-'a']=desocupado; aux=desocupado; raices[aux].letra=l; desocupado++; } } raices[aux].fin_palabra=true; } dfs(0); res(0,false); cout<<ans.size()<<endl; for(char r:ans){ cout<<r<<endl; } 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...