ну так вот я к чему -- если совсем уперся, то можно на реддите почитать советы. Если вроде все ок, но ответ не сходится, то можно взять опять же готовое и прогнать и сопоставить результаты.
Вроде даже не самые плохие результаты, по затратам памяти и цпу в крестах я был сильно лучше среднего. Хотя я только там щупал и знакомился со всякими std::map, std::set и прочие