Cod sursa(job #1248466)

Utilizator UMihneaUngureanu Mihnea UMihnea Data 25 octombrie 2014 11:38:04
Problema Trie Scor 55
Compilator cpp Status done
Runda Arhiva educationala Marime 1.54 kb
#include <fstream>

using namespace std;
ifstream fin("trie.in");
ofstream fout("trie.out");
struct nod
{
    int ap,cnt;
    nod *urm[26];
    nod()
    {
        ap=0;
        cnt=0;
        for(int i=0;i<26;i++)urm[i]=NULL;
    }
};
nod *root,*pt;
int c,k;
char s[25],*ps;
int main()
{
    root=new nod;
    while(fin>>c)
    {
        fin>>s;
        if(c==0)
        {
            for(pt=root,ps=s;*ps;ps++)
            {
                k=*ps-'a';
                if(!pt->urm[k])pt->urm[k]=new nod;
                pt=pt->urm[k];
                pt->cnt++;

            }
            pt->ap++;
            continue;
        }
        if(c==1)
        {
            for(pt=root,ps=s;*ps;ps++)
            {
                k=*ps-'a';
                pt=pt->urm[k];
                pt->cnt--;

            }
            pt->ap--;
            continue;
        }
        if(c==2)
        {
            for(pt=root,ps=s;*ps;ps++)
            {
                k=*ps-'a';
                if(!pt->urm[k])
                {
                    fout<<"0\n";
                    break;
                }
                pt=pt->urm[k];
            }
            if(*ps==0)fout<<pt->ap<<'\n';
            continue;
        }
        if(c==3)
        {
            int LG=0;
            for(pt=root,ps=s;*ps;ps++)
            {
                k=*ps-'a';
                if(!pt->urm[k])break;
                pt=pt->urm[k];LG++;
            }
            fout<<LG<<'\n';
        }


    }
    return 0;
}