Submission #492753

#TimeUsernameProblemLanguageResultExecution timeMemory
492753erik_kl1Type Printer (IOI08_printer)C++11
100 / 100
120 ms102168 KiB
#include <bits/stdc++.h> #define F0R(i, n) for(int i = 0; i < (n); i++) using namespace std; ostringstream os; struct node { int term_cnt; bool marked; node *nex[26]; node() { term_cnt = 0; marked = 0; F0R(i,26) nex[i] = NULL; } }; struct trie { node rt; void insert(string s) { node *cur = &rt; F0R(i,s.size()) { if(cur->nex[s[i]-'a'] == NULL) cur->nex[s[i]-'a'] = new node(); cur = cur->nex[s[i]-'a']; } cur->term_cnt++; } void mark(string s) { node *cur = &rt; F0R(i,s.size()) { cur = cur->nex[s[i]-'a']; cur->marked = 1; } } } t; int dfs(node *v) { int ret = v->term_cnt; F0R(i,ret) os << "P\n"; F0R(i,26) if(v->nex[i] != NULL && !v->nex[i]->marked) { os << ((char) (i+'a')) << '\n'; ret += dfs(v->nex[i]); os << "-\n"; ret += 2; } F0R(i,26) if(v->nex[i] != NULL && v->nex[i]->marked) { os << ((char) (i+'a')) << '\n'; ret += dfs(v->nex[i]); ret++; } return ret; } int main() { ios::sync_with_stdio(0); cin.tie(0), cout.tie(0); int N; cin >> N; string longest = ""; F0R(i,N) { string s; cin >> s; t.insert(s); if(s.size() > longest.size()) longest = s; } t.mark(longest); cout << dfs(&t.rt) << '\n'; cout << os.str(); return 0; }

Compilation message (stderr)

printer.cpp: In member function 'void trie::insert(std::string)':
printer.cpp:2:36: warning: comparison of integer expressions of different signedness: 'int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
    2 | #define F0R(i, n) for(int i = 0; i < (n); i++)
      |                                    ^
printer.cpp:25:9: note: in expansion of macro 'F0R'
   25 |         F0R(i,s.size()) {
      |         ^~~
printer.cpp: In member function 'void trie::mark(std::string)':
printer.cpp:2:36: warning: comparison of integer expressions of different signedness: 'int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
    2 | #define F0R(i, n) for(int i = 0; i < (n); i++)
      |                                    ^
printer.cpp:35:9: note: in expansion of macro 'F0R'
   35 |         F0R(i,s.size()) {
      |         ^~~
#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...