Cod sursa(job #2197058)

Utilizator alexilasiAlex Ilasi alexilasi Data 21 aprilie 2018 08:18:37
Problema Trie Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.23 kb
#include <bits/stdc++.h>

using namespace std;

ifstream fin("trie.in");
ofstream fout("trie.out");

int x,p,i,ans;
int a[1000000],v[1000000];
string c;

int main()
{
    while(fin>>x)
    {
        fin>>c;
        if(x==0)
        {
            p=int(c[0]-'a');
            a[p]++;
            for(i=1;i<c.length();i++)
            {
                p=p*26+int(c[i]-'a');
                a[p]++;
            }
            v[p]++;
        }
        if(x==1)
        {
            p=int(c[0]-'a');
            a[p]--;
            for(i=1;i<c.length();i++)
            {
                p=p*26+int(c[i]-'a');
                a[p]--;
            }
            v[p]--;
        }
        if(x==2)
        {
            p=int(c[0]-'a');
            for(i=1;i<c.length();i++)
            {
                p=p*26+int(c[i]-'a');
            }
            fout<<v[p]<<'\n';
        }
        if(x==3)
        {
            p=int(c[0]-'a');
            ans=0;
            if(a[p])ans++;
            for(i=1;i<c.length();i++)
            {
                p=p*26+int(c[i]-'a');
                if(a[p])ans++;
                else break;
            }
            fout<<ans<<'\n';
        }
    }
    return 0;
}