divide and conquer algorithm practice problems