c++ algo