Pagini recente » Cod sursa (job #2987464) | Cod sursa (job #113552) | Cod sursa (job #1952487) | Cod sursa (job #941325) | Cod sursa (job #2011324)
#include <fstream>
#include<cstring>
using namespace std;
ifstream cin ("trie.in");
ofstream cout ("trie.out");
int p,frecv[100010][26],noade,number[100100],obvious[100100]; char s[30];
void add (int poz,int varf)
{ int h=frecv[varf][s[poz]-'a'];
if(h!=0)
{obvious[h]++;
if(poz==strlen(s)-1) {number[h]++; return;} else
add(poz+1,h);
}
else
{
noade++;
obvious[noade]++;
frecv[varf][s[poz]-'a']=noade;
if(poz==strlen(s)-1) {number[noade]++; return;} else
add(poz+1,noade);
}
}
void spulber (int poz,int varf)
{ obvious[varf]--;
if(poz==strlen(s)) number[varf]--; else
{
int h=frecv[varf][s[poz]-'a'];
spulber(poz+1,h);
}
}
void tipar (int poz,int varf)
{ if(poz==strlen(s)) cout<<number[varf]<<"\n"; else
{
int h=frecv[varf][s[poz]-'a'];
tipar(poz+1,h);
}
}
void scrie (int poz,int varf)
{
int h=frecv[varf][s[poz]-'a'];
if(h==0 || obvious[h]==0) cout<<poz<<"\n";
else scrie(poz+1,h);
}
void corso ()
{
while(cin>>p)
{
cin>>s;
if(p==0) add(0,0);
else if(p==1) spulber(0,0);
else if(p==2) tipar(0,0);
else if(p==3) scrie(0,0);
}
}
int main()
{
corso();
cin.close();
cout.close();
return 0;
}