Cod sursa(job #3030618)

Utilizator maiaauUngureanu Maia maiaau Data 17 martie 2023 19:16:43
Problema Trie Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.47 kb
#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;
}