Pagini recente » Cod sursa (job #934212) | Cod sursa (job #3132111) | Cod sursa (job #615755) | Cod sursa (job #1420667) | Cod sursa (job #714208)
Cod sursa(job #714208)
#include<cstdio>
void read(),solve();
char A[23],*p;
int t,i;
struct trie{
int ok,cnt;
trie *fii[26];
trie()
{
for(int i=0;i<26;i++)fii[i]=0;
ok=0;
cnt=0;
}
};
trie *root,*aux;
int main()
{
read();
solve();
return 0;
}
void read()
{
freopen("trie.in","r",stdin);
freopen("trie.out","w",stdout);
}
void solve()
{
root=new trie;
for(;scanf("%d %s",&t,A)+1;)
{
if(!t)
{
for(aux=root,p=A;*p;p++)
{
i=*p-'a';
if(!aux->fii[i])
aux->fii[i]=new trie;
aux=aux->fii[i];aux->cnt++;
}
aux->ok++;
continue;
}
if(t==1)
{
for(aux=root,p=A;*p;p++)
{
i=*p-'a';
aux=aux->fii[i];
aux->cnt--;
}
aux->ok--;
continue;
}
if(t==2)
{
for(aux=root,p=A;*p;p++)
{
i=*p-'a';
aux=aux->fii[i];
if(!aux)break;
}
aux?printf("%d\n",aux->ok):printf("0\n");
continue;
}
if(t==3)
{
int nr=0;
for(aux=root,p=A;*p;p++)
{
i=*p-'a';
aux=aux->fii[i];
if(!aux||!aux->cnt)break;
nr++;
}
printf("%d\n",nr);
}
}
}