Solving Diamond Problem in C++