Cod sursa(job #3161318)

Utilizator AlexandruBenescuAlexandru Benescu AlexandruBenescu Data 26 octombrie 2023 17:00:14
Problema Trie Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.06 kb
#include <bits/stdc++.h>
using namespace std;
ifstream fin("trie.in");
ofstream fout("trie.out");

struct NODE {
  int wordCnt;
  int prefixCnt;
};

map <string, NODE> G;

void insertOperation(string s) {
  string str = "";
  for (int i = 0; i < (int)s.size(); i++) {
    str += s[i];
    G[str].prefixCnt++;
  }
  G[s].wordCnt++;
}

void eraseOperation(string s) {
  string str = "";
  for (int i = 0; i < (int)s.size(); i++) {
    str += s[i];
    G[str].prefixCnt--;
  }
  G[s].wordCnt--;
}

void countOperation(string s) {
  fout << G[s].wordCnt << "\n";
}

void prefixOperation(string s) {
  string str = "";
  for (int i = 0; i < (int)s.size(); i++) {
    str += s[i];
    if (G[str].prefixCnt < 1) {
      fout << i << "\n";
      return;
    }
  }
  fout << s.size() << "\n";
}

int main() {
  int t;
  string s;
  while (fin >> t >> s)
    if (t == 0)
      insertOperation(s);
    else if (t == 1)
      eraseOperation(s);
    else if (t == 2)
      countOperation(s);
    else
      prefixOperation(s);
  return 0;
}