Divide and conquer algorithms