Pagini recente » Cod sursa (job #964934) | Cod sursa (job #640288) | Cod sursa (job #78209) | Cod sursa (job #2381162) | Cod sursa (job #1162083)
#include <fstream>
#include <cstring>
using namespace std;
ifstream f("trie.in");
ofstream g("trie.out");
struct csp
{
int db, szovege;
csp* kov[26];
csp()
{
db = 0;
szovege = 0;
memset (kov, NULL, 104);
}
};
typedef csp* mut_csp;
int t, n, i, h, j;
string akts;
mut_csp gyoker, akt;
void betesz (string s)
{
for (i=0; i<=h; i++)
{
if (akt->kov[s[i]-'a'] == NULL) akt->kov[s[i]-'a'] = new csp;
akt = akt->kov[s[i]-'a'];
akt->db ++;
}
akt->szovege++;
}
void torol (string s)
{
for (i=0; i<=h; i++)
{
akt = akt->kov[s[i]-'a'];
akt->db --;
}
akt->szovege--;
}
void kiirdb (string s)
{
for (i=0; i<=h; i++)
{
if (!akt->kov[s[i]-'a']) break;
akt = akt->kov[s[i]-'a'];
}
g << akt->szovege << "\n";
}
void kiirhossz (string s)
{
int i=0;
while (akt->kov[s[i]-'a'] && akt->kov[s[i]-'a']->db)
{
akt = akt->kov[s[i]-'a'];
i++;
}
g << i << "\n";
}
int main()
{
gyoker = new csp;
akt = new csp;
while (f >> t >> akts)
{
h = akts.length() -1;
akt = gyoker;
if (t == 0) betesz(akts);
else if (t == 1) torol(akts);
else if (t == 2) kiirdb(akts);
else if (t == 3) kiirhossz(akts);
}
return 0;
}