Problem:
Search III

Your task is to write a program of a simple dictionary which implements the following instructions:

insert str: insert a string str in to the dictionary

find str: if the distionary contains str, then print 'yes', otherwise print 'no'

Input

In the first line n, the number of instructions is given. In the following n lines, n instructions are given in the above mentioned format.

Output

Print yes or no for each find instruction in a line.

Constraints

A string consists of 'A', 'C', 'G', or 'T'

1 ≤ length of a string ≤ 12

n ≤ 1000000

Sample Input 1

5
insert A
insert T
insert C
find G
find A

Sample Output 1

no
yes

Sample Input 2

13
insert AAA
insert AAC
insert AGA
insert AGG
insert TTT
find AAA
find CCC
find CCC
insert CCC
find CCC
insert T
find TTT
find T

Sample Output 2

yes
no
no
yes
yes
yes

Notes

Template in C

Solution in C# (judge verdict: Time Limit Exceeded)

/*0429???????????\??????????¢¨??????????????????????????????????????????
 * 
 * Created by SharpDevelop.
 * User: yog-sothoth
 * Date: 2017/04/23
 * Time: 17:25
 * 
 * To change this template use Tools | Options | Coding | Edit Standard Headers.
 */

using System.Collections.Generic;
using System;
using System.IO;

namespace Dictionary
{
	
	public class DictionaryList
	{
		
		
		public static void Main(string[] args)
		{
		
			
		
			tableSearch ns = new tableSearch();
			//List<string> dict=new List<string>();
			int num = int.Parse(Console.ReadLine());// the number of instructions
			string[] table = new string[num];
			table[0]="z";//????????? max
			int index=0;
				
			var sw = new StreamWriter(Console.OpenStandardOutput())
	    	{ AutoFlush = false };
			
			Console.SetOut(sw);
			
			for (int i = 0; i < num; i++) {
				string iands = Console.ReadLine();//instruction and s tring
				string[] instAndStr = iands.Split();
			
				
				//Add list instAndStr[1]		
				if (instAndStr[0] == "insert") {//??????????????\???
					
					ns.insert(instAndStr[1], table,index);
					index++;//????°?
					
				} else { //?????????find				
					Console.WriteLine(ns.search(instAndStr[1], table, index));
					
				}
				
			}
			Console.Out.Flush();
		}
		
	}
	public class tableSearch
	{
		public void insert(string x, string[] tbl,int indx)
		{//????????¢?´¢??§?????\??????????????????????????\???indx=????°????????´?
			int point=biSearch(x,tbl,indx);
			
			for(int i=indx;i>=point;i--)
			{
				tbl[i+1]=tbl[i];
					
			}
			tbl[point]=x;
			return;
		}
		
			
		public string search(string x, string[] tbl,int indx)
		{	
			int mid=0;
			int head=0;
			int tail=indx;
			while(head<=tail)
			{
				mid=(int)((head+tail)/2);
					
				if(x==tbl[mid])
				{
					return "yes";
				}
				else if(x.CompareTo(tbl[mid])>0)
				{
					head =mid+1;
				}else{tail=mid-1;}
			
			}
			return "no";
		}
		public int  biSearch(string x ,string[] tbl,int indx)
		{
			int mid=0;
			int head=0;
			int tail=indx;
			while(head<=tail)
			{
				mid=(int)((head+tail)/2);
					
				if(x.CompareTo(tbl[mid])>0)
				{
					head =mid++;
				}else{tail=mid-1;}
			
			}//??¶??????while??????????????????
			
				
					return mid;
				
				
		}
	}

}