Data hosted with ♥ by Pastebin.com - Download Raw - See Original
  1.     // ......
  2.     // all codes above are the same
  3.     }else
  4.     {
  5.         b = balance( A, l, r-1, p );
  6.         if( b == 1 )
  7.             return searchHeavier( A, l, p );
  8.         else if( b == -1 )
  9.             return searchHeavier( A, p+1, r-1 );
  10.         else if( b == 0 )       // modify this part
  11.         {
  12.             b = balance( A, r-1, r, r-1 );
  13.             if( b == 0 )
  14.                 return -1;  // all balls are the same
  15.             else if( b == -1 )
  16.                 return r;
  17.             // it's impossible that b=1
  18.         }
  19.     }
  20. }