Company: citadel_23aug
Difficulty: medium
Code refactor and speedup Problem Description This code was written long ago and works fine on a small sample - but takes too long on a large input. Refactor and simplify the code. Find a faster solution to the problem. #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; // The current implementation is correct but slow int root_node(std::vector output) { int leaf = std::numeric_limits ::max(); // Initialize to minimum value int leaf = std::numeric_limits ::max(); int x = 0, counter = 1; for (int node : output) { int edge = output[node]; auto begin = output.begin(); auto end = output.end(); // std::forward auto it = std::find_if(begin, output.end(), [edge](int node) { return edge == node; }); >> std::distance(output.begin(), it); for (size_t i = 0; i ::digits; int direction = (unsigned int)vertex - edge >> digits; int dis