[1] 授業単元:
[2] 問題文(含コード&リンク):
There is a client that constantly receives random number between 1 - 2,000,000.
Under 2 MB of Memory usage, on demand, return the top 10 numbers that was generated the most.
[3] 環境
 [3.1] OS: (Windows/Linux/等々)
 [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
 [3.3] 言語: どちらでも可
[4] 期限: 無期限
[5] その他の制限:

アルゴリズムの方に投稿するかこちらに投稿するかで迷ったのですが問題に対する解答を得ると言う形式を取っていたこちらに投稿させていただきました。
同僚の就職面接時に出題された問題だそうです。

8byte使って生成された数字とその回数をメモリにセーブすると約250,000のユニークな数字が出た時点で破綻しますし。
(それまでは十分通用しますが)
ファイルにセーブすると言う案も出たのですがそれだと厳密には2MBのメモリしか使用しないと言う制限に反する気もします。
(まぁ問題文でファイルにセーブする事が制限されている訳では無いのですが)