>>450
メモリのアサインのとこ。
外から渡してるから内側ではそれにしたがってハッシュを作って探索してるロジックになってるでしょ。
超短絡的に改善するとすればコンソール出力用の文字列作ってる処理とか最悪必要ないからその辺コメントアウトと、自分の環境に合わせてオプティマイズしてビルドすればもしかもしたら早くなるかもしれない。

逆に何を持ってコード汚いと感じたのかが分からん。
C++11以降の書き方で冗長なとこも(アセンブラ直書き以外)特に見当たらなくて読みやすいと思うけど。