제출 #522487

#제출 시각아이디문제언어결과실행 시간메모리
522487JesusType Printer (IOI08_printer)C++14
60 / 100
108 ms123588 KiB
#include <bits/stdc++.h> using namespace std; char ans[100020]; 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[aux]=raices[pos].letra; aux++; } if(raices[pos].fin_palabra==true) { ans[aux]='P'; aux++; } int m=-1; 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==-1) m=i; else res(raices[pos].hijos[i],false); } } if(pos==0&&m!=-1) res(raices[pos].hijos[m],true); else if(m!=-1) res(raices[pos].hijos[m],rama); if(pos!=0&&rama==false) { ans[aux]='-'; aux++; } } 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); aux=0; res(0,false); cout<<aux<<endl; for(int i=0;i<aux;i++){ cout<<ans[i]<<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...