Because "5/6 Gigabytes" actually means 5 OR 6 gigabytes...
111000000 key/value pairs with 50 bit keys and 32bit values would take (111000000 * (50+32))/(8*1024*1024*1024) = 1.05 gigabytes or memory when stored as tightly packed (bit) array.
You have 5 times more memory then that.
A 10 level deep skip-list-based map on 64bit system would take (111000000 * (64+32+10*16))/(8*1024*1024*1024) = 3.308 Gigabytes in worst case scenario and you'll still have more than gigabyte of RAM to deal with heap management overhead.
So I'd advise to grab any available multimap and attempt to use it - in my opinion you have more than enough memory to deal with your situation without using any extra tricks.
--EDIT--
Actually, I don't know C/C++
Well, how do you expect to work with maps that contain 111000000 of keys if you don't know C++? You'll have to do some reading.
standard library includes std::multimap, and there are several classes within boost library. Qt 4 includes QMap which is based on skip lists. Try using any of them.