Mai intai trebuie sa te autentifici.

Cod sursa(job #2313622)

Utilizator BlaugranasEnal Gemaledin Blaugranas Data 7 ianuarie 2019 11:20:48
Problema Trie Scor 90
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.44 kb
#include<algorithm>
#include<fstream>
using namespace std;
int x,i,k;
char s[26];
struct O
{
    int info,co;
    O *a[26];
    O()
    {
        int i;
        for(info=co=i=0;i<26;i++)
            a[i]=0;
    }
}*p,*q,*r;
int main()
{
    ifstream f("trie.in");
    ofstream g("trie.out");
    r=new O();
    r->co=1;
    while(f>>x>>s)
    {
        p=r;
        if(x==0)
        {
            for(i=0;s[i];i++)
            {
                if(!p->a[s[i]-'a'])
                {
                    q=new O();
                    p->a[s[i]-'a']=q;
                    p=q;
                }
                else
                    p=p->a[s[i]-'a'];
                p->co++;
            }
            p->info++;
        }
        else if(x==1)
        {
            for(i=0;s[i];i++)
            {
                p=p->a[s[i]-'a'];
                p->co--;
            }
            p->info--;
        }
        else if(x==2)
        {
            for(i=0;s[i];i++)
                if(p->a[s[i]-'a'])
                    p=p->a[s[i]-'a'];
                else
                    break;
            if(!s[i])
                g<<(p->info)<<'\n';
            else
                g<<0<<'\n';
        }
        else
        {
            for(k=i=0;s[i];i++)
                if(p->a[s[i]-'a']&&p->co)
                    p=p->a[s[i]-'a'];
                else
                    break;
            if(!p->co)
                i--;
            g<<i<<'\n';
        }
    }
}