Submission #880498

#TimeUsernameProblemLanguageResultExecution timeMemory
880498StefanL2005Type Printer (IOI08_printer)C++14
100 / 100
143 ms119364 KiB
#include <bits/stdc++.h> using namespace std; #define CH (*p - 'a') int nr = 0; struct Trie { int down, word; Trie *path; vector<Trie*> fii; Trie() { down = word = 0; path = 0; fii = vector<Trie*> (26, 0); } }; Trie *Root = new Trie; void insert(Trie *Nod, char *p) { if (*p == '\0') { Nod->word++; return; } if (Nod->fii[CH] == NULL) { Nod->fii[CH] = new Trie; nr++; } insert(Nod->fii[CH], p + 1); if (Nod->fii[CH]->down + 1 > Nod->down) { Nod->down = Nod->fii[CH]->down + 1; Nod->path = Nod->fii[CH]; } } void easy_search(Trie *Nod) { while (Nod->word > 0) { cout<< "P\n"; Nod->word--; } for (int i = 0; i < 26; i++) if (Nod->fii[i] != NULL) { cout<< (char) (i + 'a') << "\n"; easy_search(Nod->fii[i]); cout<< "-\n"; } } int show_longest(Trie *Nod, int k) { if (Nod->path == NULL) return k; return show_longest(Nod->path, k + 1); } void complex_search(Trie *Nod) { while (Nod->word > 0) { cout<< "P\n"; Nod->word--; } if (Nod->path == NULL) return; char let; for (int i = 0; i < 26; i++) { if (Nod->fii[i] == NULL) continue; if (Nod->fii[i] == Nod->path) { let = (char) (i + 'a'); continue; } cout<< (char) (i + 'a') << "\n"; easy_search(Nod->fii[i]); cout<< "-\n"; } cout<< let << "\n"; complex_search(Nod->path); } int main() { int N; cin>> N; for (int i = 0; i < N; i++) { string w; cin>> w; insert(Root, &w[0]); } cout<< (nr - Root->down) * 2 + Root->down + N << "\n"; complex_search(Root); return 0; }

Compilation message (stderr)

printer.cpp: In function 'void complex_search(Trie*)':
printer.cpp:78:10: warning: 'let' may be used uninitialized in this function [-Wmaybe-uninitialized]
   78 |     char let;
      |          ^~~
#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...