Cod sursa(job #1290671)

Utilizator ZimmyZimmermann Erich Zimmy Data 11 decembrie 2014 17:49:33
Problema Trie Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.4 kb
#include <fstream>

using namespace std;
ifstream fin("trie.in");
ofstream fout("trie.out");
struct trie
{
    trie *s[26];
    int v,c;
    trie()
    {
        c=v=0;
        for(int i=0;i<26;i++)
            s[i]=NULL;
    }
};
trie *R,*P;
char w[25],*p;
int a,k;
int main()
{
    R=new trie;
    for(;fin>>a;)
    {
        fin>>w;

        if(a==0)
        {
            for(P=R,p=w;*p;p++)
            {
                if(!P->s[*p-'a'])
                    P->s[*p-'a']=new trie;
                P=P->s[*p-'a'];
                P->c++;
            }
            P->v++;
            continue;
        }
        if(a==1)
        {
            for(P=R,p=w;*p;p++)
            {
                P=P->s[*p-'a'];
                P->c--;
            }
            P->v--;
            continue;
        }
        if(a==2)
        {
            for(P=R,p=w;*p;p++)
            {
                if(!P->s[*p-'a'])break;
                if(P->s[*p-'a']->c==0)break;
                P=P->s[*p-'a'];

            }
            if(*p)
                fout<<"0\n";
            else
                fout<<P->v<<"\n";
            continue;
        }
        for(k=0,P=R,p=w;*p;p++)
        {
            if(!P->s[*p-'a'])break;
            if(P->s[*p-'a']->c==0)break;
            P=P->s[*p-'a'];
            k++;
        }
        fout<<k<<"\n";
    }
    return 0;
}