Pagini recente » Cod sursa (job #621518) | Cod sursa (job #655668) | Cod sursa (job #1078409) | Cod sursa (job #3269992) | Cod sursa (job #661224)
Cod sursa(job #661224)
#include <cstdio>
#include <fstream>
#include <iostream>
#include <map>
#include <string>
#include <algorithm>
using namespace std;
#define file_in "trie.in"
#define file_out "trie.out"
string cuv;
map<string,int> dic;
int tip,i;
int main(){
ifstream f(file_in);
ofstream g(file_out);
while(f>>tip>>cuv){
if (tip==0)
dic[cuv]++;
else
if (tip==1){
map<string,int> :: iterator it;
for (it=dic.begin();it!=dic.end();++it)
if ((*it).first==cuv){
(*it).second--;
if ((*it).second==0)
dic.erase(it);
break;
}
}
else
if (tip==2){
int find=0;
map<string,int> :: iterator it;
for (it=dic.begin();it!=dic.end();++it)
if ((*it).first==cuv){
g<<(*it).second<<"\n";
find=1;
break;
}
if (!find)
g<<find<<"\n";
}
else{
int lcp=0;
map<string,int> :: iterator it;
for (it=dic.begin();it!=dic.end();++it){
string s1=(*it).first;
string s2=cuv;
i=0;
while(s1[i]==s2[i]){
if (i>=s1.size()) break;
if (i>=s2.size()) break;
i++;
}
lcp=max(lcp,i);
}
g<<lcp<<"\n";
}
}
return 0;
}