Submission #521342

#TimeUsernameProblemLanguageResultExecution timeMemory
521342vlad_TTType Printer (IOI08_printer)C++17
0 / 100
75 ms35896 KiB
#include <iostream>

const int SIGMA = 26;

struct Trie {
  int words;
  Trie* children[SIGMA];

  Trie() {
    words = 0;
    for (int i = 0; i < SIGMA; i++) {
      children[i] = NULL;
    }
  }
};

void insert(Trie* root, char* S) {
  if (*S == '\0') {
    root->words++;
  } else {
    if (root->children[S[0] - 'a'] == NULL) {
      root->children[S[0] - 'a'] = new Trie();
    }
    insert(root->children[S[0] - 'a'], S + 1);
  }
}

void dfs(Trie* root) {
  for (int i = 1; i <= root->words; i++) {
    std::cout << "P\n";
  }
  for (int i = 0; i < SIGMA; i++) {
    if (root->children[i] != NULL) {
      std::cout << char(i + 'a') << "\n";
      dfs(root->children[i]);
      std::cout << "-\n";
    }
  }
}

int main() {
  Trie root;
  char* S = new char[20 + 1];
  int n;
  std::cin >> n;
  for (int i = 1; i <= n; i++) {
    std::cin >> S;
    insert(&root, S);
  }
  dfs(&root);
  return 0;
}
#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...