Cod sursa(job #2990326)

Utilizator maiaauUngureanu Maia maiaau Data 7 martie 2023 19:44:16
Problema Trie Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.54 kb
#include <bits/stdc++.h>
using namespace std;

ifstream f("trie.in");
ofstream g("trie.out");

struct trie{
   int cntfin, nr;
   trie *F[26];
   trie(){
        cntfin = 0; nr = 0;
        for (int i = 0; i < 26; i++)
            F[i] = NULL;
   }
};

int task;
char w[25];
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];
                p++; aux->nr++;
            }
            aux->cntfin++;
        }
        else if (task == 1){
            while (*p){
                int i = *p - 'a';
                aux = aux->F[i];
                p++; aux->nr--;
            }
            aux->cntfin--;
        }
        else if (task == 2){
            while (*p){
                int i = *p - 'a';
                if (aux->F[i] == NULL)
                    break;
                if (aux->F[i]->nr == 0)
                    break;
                aux = aux->F[i]; p++;
            }
            if (*p == 0) g << aux->cntfin << '\n';
            else g << "0\n";
        }
        else {
            int lg = 0;
            while (*p){
                int i = *p - 'a';
                if (aux->F[i] == NULL)
                    break;
                if (aux->F[i]->nr == 0) 
                    break;
                lg++; p++; aux = aux->F[i];
            }
            g << lg << '\n';
        }
    }
    
    
    return 0;
}