Pagini recente » Cod sursa (job #1611943) | Cod sursa (job #498839) | Cod sursa (job #2128001) | Cod sursa (job #1138265) | Cod sursa (job #2296650)
#include <bits/stdc++.h>
using namespace std;
int main() {
ifstream cin("trie.in");
ofstream cout("trie.out");
map<string, int> freq;
string str; int op;
while (cin >> op >> str) {
if (op == 0) { freq[str] += 1; }
if (op == 1) {
auto it = freq.find(str);
if (it->second == 1) freq.erase(it);
else --it->second;
}
if (op == 2) {
auto it = freq.find(str);
if (it == freq.end()) cout << "0\n";
else cout << it->second << '\n';
}
if (op == 3) {
int ans = 0;
auto aug = [&](const string& a, const string& b) {
int ret = 0;
while (ret < (int)a.size() && ret < (int)b.size()
&& a[ret] == b[ret])
++ret;
ans = max(ans, ret);
};
auto it = freq.lower_bound(str);
if (it != freq.end()) aug(str, it->first);
if (it != freq.begin()) aug(str, prev(it)->first);
cout << ans << '\n';
}
}
return 0;
}