Pagini recente » Cod sursa (job #2934812) | Cod sursa (job #2693935) | Cod sursa (job #1828936) | Cod sursa (job #1872328) | Cod sursa (job #2689621)
#include <bits/stdc++.h>
using namespace std;
ifstream ci("trie.in");
ofstream cou("trie.out");
struct nod{
int x;
int ap;
nod *urm[26];
};
nod *a=new nod;//radacina
string s;
int c;
void c0(){
int r,p=s.length();
nod *cap=a;
for(int i=0;i<=p-1;i++){
//cout<<i<<"\n";
char t=s[i];
r=t-'a'+1;
//cout<<(cap->urm[r]==NULL)<<"ceva \n";
if(cap->urm[r]==NULL){
nod *aux=new nod;
for(int j=1;j<=26;j++){
aux->urm[j]=NULL;
}
aux->x=0;
cap->urm[r]=aux;
}
cap=cap->urm[r];
cap->x++;
}
cap->ap++;
}
void c1(){
int r,p=s.length();
nod *cap=a;
for(int i=0;i<=p-1;i++){
char t=s[i];
r=t-'a'+1;
cap=cap->urm[r];
cap->x--;
}
cap->ap-=1;
}
void c2(){
int r,p=s.length();
nod *cap=a;
for(int i=0;i<=p-1;i++){
char t=s[i];
r=t-'a'+1;
cap=cap->urm[r];
}
cou<<cap->ap<<"\n";
}
void c3(){
int r,p=s.length();
nod *cap=a;
for(int i=0;i<=p-1;i++){
char t=s[i];
r=t-'a'+1;
cap=cap->urm[r];
if(cap==NULL||cap->x==0){
cou<<i<<"\n";
return;
}
}
}
void citire(){
for(int j=1;j<=26;j++){
a->urm[j]=NULL;
}
while(ci>>c){
ci>>s;
//cout<<c<<" "<<s<<"\n";
if(c==0){
c0();
}
if(c==1){
c1();
}
if(c==2){
c2();
}
if(c==3){
c3();
}
}
}
int main()
{
citire();
return 0;
}