Cod sursa(job #542102)

Utilizator andrei.dAndrei Diaconeasa andrei.d Data 25 februarie 2011 19:53:06
Problema Trie Scor 30
Compilator cpp Status done
Runda Arhiva educationala Marime 0.99 kb
#include <cstdio>
#include <string>
#include <iostream>
#include <vector>
#include <set> 

using namespace std;

#define file_in "trie.in"
#define file_out "trie.out"

int tip;
multiset<string> T;
string s;
string s1;

void del(string s){
	
	multiset<string> :: iterator it;
	
	for (it=T.begin();it!=T.end();++it)
		 if (*it==s){
			 T.erase(it);
			 return ;
		 }
}

int lcp(string s){
	
	int ans=0,i;
	
	set<string> :: iterator it;
	
	for (it=T.begin();it!=T.end();++it){
		s1=(*it);
		i=0;
		while(s1[i]==s[i] && i<s.size()) i++;
		ans=max(ans,i);
	}
		
		
	return ans;	 
}

	

int main(){
	
	freopen(file_in,"r",stdin);
	freopen(file_out,"w",stdout);
	
	while(cin>> tip){
		

		cin >> s;
		if (s==" ") break;
		
		if (tip==0){
			
			T.insert(s);
		}
		else
		if (tip==1){
			
			del(s);
		}
		else
		if (tip==2){

			printf("%d\n", T.count(s));
		}
		else
		if (tip==3)
		{
			printf("%d\n", lcp(s));
		}
	}
	
	return 0;
	
}