Cod sursa(job #542085)

Utilizator andrei.dAndrei Diaconeasa andrei.d Data 25 februarie 2011 19:27:43
Problema Trie Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 1.16 kb
#include <cstdio>
#include <string>
#include <iostream>
#include <vector>
 
using namespace std;

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

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

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

int cnt(string s){
	
	int ans=0;
	
	vector<string> :: iterator it;
	
	for (it=T.begin();it!=T.end();++it)
		 if (*it==s){
			ans++;
		 }
	return ans;	 
}

int lcp(string s){
	
	int ans=0,i;
	
	vector<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(!feof(stdin)){
		
		scanf("%d ", &tip);
		cin >> s;
		if (s==" ") break;
		
		if (tip==0){
			
			T.push_back(s);
		}
		else
		if (tip==1){
			
			del(s);
		}
		else
		if (tip==2){

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