Submission #525578

#TimeUsernameProblemLanguageResultExecution timeMemory
525578DeepessonType Printer (IOI08_printer)C++17
100 / 100
201 ms122964 KiB
#include <bits/stdc++.h> typedef std::pair<int,void*> piv; std::vector<int> responder; int falta=0; struct Trie{ int letra=-1; Trie* filhos[30]={}; int size=1; bool printa=false; int dfs(){ int maxdepth=1; for(auto&x:filhos){ if(x){ maxdepth=std::max(maxdepth,1+x->dfs()); } } size=maxdepth; return maxdepth; } void executar(void){ if(letra!=-1){ responder.push_back(letra); } if(printa){ responder.push_back(777); --falta; } std::vector<piv> vec; for(auto&x:filhos){ if(x) vec.push_back({x->size,(void*)x}); } std::sort(vec.begin(),vec.end()); for(auto&x:vec){ ((Trie*)x.second)->executar(); } if(falta) responder.push_back(1000); } Trie* get(int x){ if(filhos[x])return filhos[x]; Trie* k = new Trie; filhos[x]=k; k->letra=x; return k; } }; Trie inicio; void escrever(std::string s){ Trie* aq = &inicio; for(int i=0;i!=s.size();++i){ aq=aq->get(s[i]-'a'); } aq->printa=true; } int main() { int N; std::cin>>N; for(int i=0;i!=N;++i){ std::string s; std::cin >> s; escrever(s); ++falta; } inicio.dfs(); inicio.executar(); std::cout<<responder.size()<<"\n"; for(auto&x:responder){ if(x==777){ std::cout<<"P\n"; }else if(x==1000){ std::cout<<"-\n"; }else std::cout<<((char)(x+'a'))<<"\n"; } }

Compilation message (stderr)

printer.cpp: In function 'void escrever(std::string)':
printer.cpp:51:18: warning: comparison of integer expressions of different signedness: 'int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   51 |     for(int i=0;i!=s.size();++i){
      |                 ~^~~~~~~~~~
#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...