Submission #531374

#TimeUsernameProblemLanguageResultExecution timeMemory
531374yutabiType Printer (IOI08_printer)C++14
100 / 100
148 ms101512 KiB
#include <bits/stdc++.h> using namespace std; #define pb push_back struct node { node* child[26]; bool en_buyuk; bool count; node() { for(int i=0;i<26;i++) { child[i]=NULL; en_buyuk=0; count=0; } } }; int n; vector <string> str; int maxi; int ptr; node start; node* curr; vector <char> ans; void DFS(node* nd) { if(nd->count) { ans.pb('P'); } vector <node*> ord; node* mx=NULL; vector <char> ord_ch; char mx_ch; for(int i=0;i<26;i++) { if(nd->child[i]!=NULL) { if(nd->child[i]->en_buyuk) { mx=nd->child[i]; mx_ch=i; } else { ord.pb(nd->child[i]); ord_ch.pb(i); } } } if(mx!=NULL) { ord.pb(mx); ord_ch.pb(mx_ch); } for(int i=0;i<ord.size();i++) { ans.pb(ord_ch[i]+'a'); DFS(ord[i]); } if(nd->en_buyuk==0) { ans.pb('-'); } } int main() { cin >> n; str=vector <string> (n); for(int i=0;i<n;i++) { cin >> str[i]; if(str[i].size()>maxi) { maxi=str[i].size(); ptr=i; } } start.en_buyuk=1; for(int i=0;i<n;i++) { curr=&start; for(int j=0;j<str[i].size();j++) { if(curr->child[str[i][j]-'a']==NULL) { node *nw = new node; curr->child[str[i][j]-'a']=nw; } curr=curr->child[str[i][j]-'a']; if(j+1==str[i].size()) { curr->count=1; } if(i==ptr) { curr->en_buyuk=1; } } } DFS(&start); printf("%lu\n",ans.size()); for(int i=0;i<ans.size();i++) { printf("%c\n",ans[i]); } }

Compilation message (stderr)

printer.cpp: In function 'void DFS(node*)':
printer.cpp:76:18: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<node*>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   76 |     for(int i=0;i<ord.size();i++)
      |                 ~^~~~~~~~~~~
printer.cpp: In function 'int main()':
printer.cpp:98:25: warning: comparison of integer expressions of different signedness: 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   98 |         if(str[i].size()>maxi)
      |            ~~~~~~~~~~~~~^~~~~
printer.cpp:111:22: warning: comparison of integer expressions of different signedness: 'int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
  111 |         for(int j=0;j<str[i].size();j++)
      |                     ~^~~~~~~~~~~~~~
printer.cpp:122:19: warning: comparison of integer expressions of different signedness: 'int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
  122 |             if(j+1==str[i].size())
      |                ~~~^~~~~~~~~~~~~~~
printer.cpp:138:18: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
  138 |     for(int i=0;i<ans.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...