Pagini recente » Cod sursa (job #1758957) | Cod sursa (job #2800513) | Cod sursa (job #1371317) | Cod sursa (job #2971443) | Cod sursa (job #2482401)
#include <bits/stdc++.h>
using namespace std;
#pragma GCC optimize("O3")
#pragma GCC optimize("Ofast")
ifstream in("trie.in");
ofstream out("trie.out");
struct node {
map< char, node > mp;
int signs = 0, exists = 0;
};
int main()
{
//cout << "Hello world!" << endl;
node root;
int op; string cnt;
while(in >> op >> cnt) {
if(op == 0) {
node *self = &root;
for(int i = 0; i < cnt.size(); i++) {
self = &(self->mp[cnt[i]]);
self->exists++;
}
self->signs++;
}
if(op == 1) {
node *self = &root;
for(int i = 0; i < cnt.size(); i++) {
self = &(self->mp[cnt[i]]);
self->exists--;
}
self->signs--;
}
if(op == 2) {
node *self = &root;
for(int i = 0; i < cnt.size(); i++) {
self = &(self->mp[cnt[i]]);
}
out << self->signs << endl;
}
if(op == 3) {
node *self = &root;
int len = 0;
for(; len < cnt.size() && (self->mp[cnt[len]]).exists; len++) {
if((self->mp[cnt[len]]).exists) {
self = &(self->mp[cnt[len]]);
}
}
out << len << endl;
}
}
return 0;
}