Skip to content

enaraemre/HASHIT

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

HASHIT - Hash it! in Csharp

https://www.spoj.com/problems/HASHIT/

#hash-table #hashing

Your task is to calculate the result of the hashing process in a table of 101 elements, containing keys that are strings of length at most 15 letters (ASCII codes 'A',...,'z'). Implement the following operations:

• find the index of the element defined by the key (ignore, if no such element),

• insert a new key into the table (ignore insertion of the key that already exists),

• delete a key from the table (without moving the others), by marking the position in table as empty (ignore non-existing keys in the table)

When performing find, insert and delete operations define the following function: integer Hash(string key), which for a string key=a1...an returns the value: Hash(key)=h(key) mod 101, where h(key)=19 *(ASCII(a1)*1+...+ASCII(an)n). Resolve collisions using the open addressing method, i.e. try to insert the key into the table at the first free position: (Hash(key)+j2+23j) mod 101, for j=1,...,19. After examining of at least 20 table entries, we assume that the insert operation cannot be performed.

Input

t [the number of test cases <= 100] n1 [the number of operations (one per line)[<= 1000] ADD:string [or] DEL:string [other test cases, without empty lines betwee series]

Output

For every test case you have to create a new table, insert or delete keys, and write to the output: the number of keys in the table [first line] index:key [sorted by indices]

Example

Input:

1

11

ADD:marsz

ADD:marsz

ADD:Dabrowski

ADD:z

ADD:ziemii

ADD:wloskiej

ADD:do

ADD:Polski

DEL:od

DEL:do

DEL:wloskiej

Output:

5

34:Dabrowski

46:Polski

63:marsz

76:ziemii

96:z