Submission #661167

#TimeUsernameProblemLanguageResultExecution timeMemory
661167as111Type Printer (IOI08_printer)C++14
Compilation error
0 ms0 KiB
#include <iostream> #include <vector> #include <string> #define MAXN 25000 using namespace std; struct Trie { int nex[26]; // index of next trie for each letter int prev; // parent bool end; // end of a word Trie() { fill(nex, nex + 26, -1); prev = -1; end = false; } }; Trie *tries[MAXN * 20 + 5]; int N; char letters[200]; // store letter for each ascii value int index = 1; int wc = 0; //word count void traverse(int curr) { for (int c = 0; c < 26; c++) { // loop through each letter if (tries[curr].nex[c] != -1) { cout << letters[c] << endl; traverse(tries[curr].nex[c]); if (wc == N) return; cout << "-" << endl; } } if (tries[curr].end) { cout << "P" << endl; wc++; } return; } int main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); cin >> N; for (int i = 0; i < N; i++) { string str; cin >> str; int curr = 0; for (int j = 0; j < (int)str.length(); j++) { int c = (int)str[j] - 97; letters[c] = str[j]; if (tries[curr].nex[c] != -1) { // prefix recorded previously curr = tries[curr].nex[c]; } else { tries[curr].nex[c] = index; tries[index].prev = curr; curr = index; index++; } cout << curr << endl; } tries[curr].end = true; cout << endl; } int curr = 0; traverse(curr); }

Compilation message (stderr)

printer.cpp: In function 'void traverse(int)':
printer.cpp:26:19: error: request for member 'nex' in 'tries[curr]', which is of pointer type 'Trie*' (maybe you meant to use '->' ?)
   26 |   if (tries[curr].nex[c] != -1) {
      |                   ^~~
printer.cpp:28:25: error: request for member 'nex' in 'tries[curr]', which is of pointer type 'Trie*' (maybe you meant to use '->' ?)
   28 |    traverse(tries[curr].nex[c]);
      |                         ^~~
printer.cpp:33:18: error: request for member 'end' in 'tries[curr]', which is of pointer type 'Trie*' (maybe you meant to use '->' ?)
   33 |  if (tries[curr].end) {
      |                  ^~~
printer.cpp: In function 'int main()':
printer.cpp:51:20: error: request for member 'nex' in 'tries[curr]', which is of pointer type 'Trie*' (maybe you meant to use '->' ?)
   51 |    if (tries[curr].nex[c] != -1) { // prefix recorded previously
      |                    ^~~
printer.cpp:52:24: error: request for member 'nex' in 'tries[curr]', which is of pointer type 'Trie*' (maybe you meant to use '->' ?)
   52 |     curr = tries[curr].nex[c];
      |                        ^~~
printer.cpp:55:17: error: request for member 'nex' in 'tries[curr]', which is of pointer type 'Trie*' (maybe you meant to use '->' ?)
   55 |     tries[curr].nex[c] = index;
      |                 ^~~
printer.cpp:56:18: error: request for member 'prev' in 'tries[index]', which is of pointer type 'Trie*' (maybe you meant to use '->' ?)
   56 |     tries[index].prev = curr;
      |                  ^~~~
printer.cpp:62:15: error: request for member 'end' in 'tries[curr]', which is of pointer type 'Trie*' (maybe you meant to use '->' ?)
   62 |   tries[curr].end = true;
      |               ^~~