divide and conquer algorithm example problems