Submission #322618

#TimeUsernameProblemLanguageResultExecution timeMemory
322618mglstewType Printer (IOI08_printer)C++17
100 / 100
161 ms98668 KiB
#include <bits/stdc++.h> #define MOD 1000000007 #define ff first #define ss second #define pb push_back #define ll long long #define N 100005 #define ccin cin >> #define ccout cout << 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){ ccout char(i + 'a')<< '\n'; if(root -> next[i] -> last){ ccout "P" << '\n'; } Print(root -> next[i]); ccout "-" << '\n'; } } } int n; string st; int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); ccin n; for(int i = 1; i <= n; i++) { string s; ccin s; insert(root, s); if(s.size() > st.size()) st = s; } search(root, st); ccout ans * 2 + n - st.size() << '\n'; Print(root); for(int i = 0; i < st.size(); i++){ ccout st[i] << '\n'; Print(root -> next[st[i] - 'a']); if(root -> next[st[i] - 'a'] -> last){ ccout "P" << '\n'; } root = root -> next[st[i] - 'a']; } }

Compilation message (stderr)

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