Submission #320025

#TimeUsernameProblemLanguageResultExecution timeMemory
320025Bill_00Type Printer (IOI08_printer)C++14
100 / 100
168 ms98660 KiB
#include <bits/stdc++.h> using namespace std; int ans = 0; struct Node{ int last; int is; Node *next[26]; Node(){ last = false; is = false; for(int i = 0; i < 26; i++) next[i] = NULL; } } *root = new Node; void insert(Node *root, string s){ for(int i = 0; i < s.size(); i++){ int index = s[i] - 'a'; if(root -> next[index] == NULL) { root -> next[index] = new Node; ans ++; } root = root -> next[index]; } root -> last = 1; } void search(Node *root, string s){ for(int i = 0; i < s.size(); i++){ int index = s[i] - 'a'; root = root -> next[index]; root -> is = 1; } root -> last = 1; } void Print(Node *root){ for(int i = 0; i < 26; i++){ if(root -> next[i] != NULL && !root -> next[i] -> is){ cout << char(i + 'a')<< '\n'; if(root -> next[i] -> last) cout << "P" << '\n'; Print(root -> next[i]); cout << "-" << '\n'; } } } int n; string st; int main(){ ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); cin >> n; for(int i = 1; i <= n; i++) { string s; cin >> s; insert(root, s); if(s.size() > st.size()) st = s; } search(root, st); cout << ans * 2 + n - st.size() << '\n'; Print(root); for(int i = 0; i < st.size(); i++){ cout << st[i] << '\n'; Print(root -> next[st[i] - 'a']); if(root -> next[st[i] - 'a'] -> last) cout << "P" << '\n'; root = root -> next[st[i] - 'a']; } }

Compilation message (stderr)

printer.cpp: In function 'void insert(Node*, std::string)':
printer.cpp:16:20: warning: comparison of integer expressions of different signedness: 'int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   16 |   for(int i = 0; i < s.size(); i++){
      |                  ~~^~~~~~~~~~
printer.cpp: In function 'void search(Node*, std::string)':
printer.cpp:27:22: warning: comparison of integer expressions of different signedness: 'int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   27 |     for(int i = 0; i < s.size(); i++){
      |                    ~~^~~~~~~~~~
printer.cpp: In function 'int main()':
printer.cpp:59:20: warning: comparison of integer expressions of different signedness: 'int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   59 |   for(int i = 0; i < st.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...