Pagini recente » Cod sursa (job #3033498) | Cod sursa (job #2666252) | Cod sursa (job #42083) | Cod sursa (job #2444685) | Cod sursa (job #2684012)
#include <bits/stdc++.h>
using namespace std;
ifstream f("trie.in");
ofstream g("trie.out");
multiset < string > ums;
int op;
string cuv;
multiset < string > :: iterator it1;
multiset < string > :: iterator it2;
int maxmax;
void common_prefix(string s1, string s2) {
int maxpref = 0;
for (int i=0;i<s2.size() && i<s1.size();i++) {
if (s1[i]==s2[i]) {
maxpref++;
}
else {
break;
}
}
maxmax = max(maxmax,maxpref);
}
int main()
{
while (f >> op) {
f >> cuv;
if (op==0) {
ums.insert(cuv);
}
else if (op==1) {
ums.erase(ums.find(cuv));
}
else if (op==2) {
g << ums.count(cuv) << '\n';
}
else {
ums.insert(cuv);
it1 = ums.find(cuv);
it2 = it1;
maxmax = 0;
if (it1 != ums.begin()) {
it1--;
common_prefix(*it1,cuv);
}
if (it2 != --ums.end()) {
it2++;
common_prefix(*it2,cuv);
}
ums.erase(ums.find(cuv));
g << maxmax << '\n';
}
}
return 0;
}