Pagini recente » Cod sursa (job #770864) | Cod sursa (job #3030618)
#include <bits/stdc++.h>
using namespace std;
ifstream f("trie.in");
ofstream g("trie.out");
struct trie {
int nr, nrfin;
trie *F[26];
trie(){
nr = nrfin = 0;
for (int i = 0; i < 26; i++)
F[i] = NULL;
}
};
int task;
char w[21];
trie *root;
int main()
{
root = new trie;
while (f >> task >> w){
trie *aux = root;
char *p = w;
if (task == 0){
while (*p){
int i = *p - 'a';
if (aux->F[i] == NULL)
aux->F[i] = new trie;
aux = aux->F[i];
aux->nr++; p++;
}
aux->nrfin++;
}
else if (task == 1){
while (*p){
int i = *p - 'a';
aux = aux->F[i];
aux->nr--; p++;
}
aux->nrfin--;
}
else if (task == 2){
while (*p){
int i = *p - 'a';
if (aux->F[i] == NULL) break;
aux = aux->F[i];
if (aux->nr == 0) break;
p++;
}
g << (*p == 0 ? aux->nrfin : 0) << '\n';
}
else {
int lg = 0;
while (*p){
int i = *p - 'a';
if (aux->F[i] == NULL) break;
aux = aux->F[i];
if (aux->nr == 0) break;
p++; lg++;
}
g << lg << '\n';
}
}
return 0;
}