Divide-and-conquer algorithm