Pagini recente » Cod sursa (job #2742354) | Cod sursa (job #122768) | Cod sursa (job #122030) | Cod sursa (job #2464189) | Cod sursa (job #2082645)
#include <iostream>
#include <fstream>
#include <stdlib.h>
#include <string.h>
using namespace std;
struct trie {
int nr = 0;
trie *kov[26] = { 0 };
} *fa = new trie;
int main()
{
ifstream f;
ofstream g;
f.open("trie.in");
g.open("trie.out");
char c[20]; int n;
while(f >> n >> c) {
trie *temp_fa = fa;
int len = strlen(c), tmp;
if(n == 0) {
for(int i = 0; i < len; ++i) {
tmp = c[i] - 'a';
if(!temp_fa->kov[tmp]) {
temp_fa->kov[tmp] = new trie;
}
temp_fa = temp_fa -> kov[tmp];
}
temp_fa->nr += 1;
} else if(n == 1) {
for(int i = 0; i < len; ++i) {
tmp = c[i] - 'a';
temp_fa = temp_fa -> kov[tmp];
}
temp_fa->nr =- 1;
} else if(n == 2) {
for(int i = 0; i < len; ++i) {
tmp = c[i] - 'a';
if(temp_fa) {
temp_fa = temp_fa -> kov[tmp];
} else { g << 0 << "\n"; break; }
}
if(temp_fa) { g << temp_fa->nr << "\n"; }
} else if(n == 3) {
int prefix = 0;
for(int i = 0; i < len; ++i) {
tmp = c[i] - 'a';
if(!temp_fa->nr) { prefix = i; }
if(!temp_fa -> kov[tmp]) {
break;
}
temp_fa = temp_fa -> kov[tmp];
}
g << prefix << "\n";
}
}
f.close();
return 0;
}