There is an array of integers and there is a number M. The array needs to be sorted array with respect to the following criterion:
(arr[i] % M, arr[i] / M)
That is, the ordering is determined based on the result of arr[i] % M, and, in case of a tie, based on the result of arr[i] / M.
I know that a custom comparator can be passed like this:
std::sort(arr, arr + n, comp) // comp is a custom comparator.
But the answer would probably not be correct if I apply sort simply twice.
Is there any way with which we can use the std::sort() to achieve this functionality?
sortcallsarr[i]%m, and if two values are equal then you want to sort byarr[i]/M?std::sortis not stable, you could get2,4,1,3after first pass.You might be interested instd::stable_sort