Pagini recente » Cod sursa (job #742870) | Cod sursa (job #722709)
Cod sursa(job #722709)
#include<fstream>
#include<string>
#include<set>
using namespace std;
typedef multiset<string>::iterator iset;
int pre_l(const string &a, const string &b)
{
int i;
for (i=0;i<a.size()&&i<b.size()&&a[i]==b[i];i++);
return i;
}
int com_pre(multiset<string> &M, string &s)
{
if (M.size()<=1) return 0;
iset it=M.upper_bound(s);
if (it==M.end()) return pre_l(*(--it),s);
return max(pre_l(*it,s),pre_l(*(--it),s));
}
int main()
{
ifstream fin("trie.in");
ofstream fout("trie.out");
multiset<string> M;
while (!fin.eof())
{
int op; string tmp;
fin>>op>>tmp; if (tmp=="") continue;
switch (op)
{
case 0:
M.insert(tmp);
break;
case 1:
if(M.find(tmp)!=M.end())
M.erase(M.find(tmp));
break;
case 2:
fout<<M.count(tmp)<<'\n';
break;
case 3:
fout<<com_pre(M, tmp)<<'\n';
}
}
return 0;
}