Pagini recente » Cod sursa (job #3267740) | Cod sursa (job #374158) | Cod sursa (job #1377262) | Cod sursa (job #1297285) | Cod sursa (job #852090)
Cod sursa(job #852090)
#include <fstream>
using namespace std;
int x,i,k;
char s[21];
struct nod
{ int info,co;
nod *a[26];
nod()
{ info=co=0;
for(int i=0; i<26; ++i) a[i]=0;
}
} *p, *q, *inc;
int main ()
{ ifstream f("trie.in"); ofstream g("trie.out");
inc=new nod();
inc->co=1;
while(f>>x>>s)
{ p=inc;
if(x==0)
{ for(i=0; s[i]; ++i)
{ if(!p->a[s[i]-'a'])
{ q=new nod();
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
{ k=0;
for(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';
}
}
g.close();
return 0;
}