With a linear time O(N) first pass you can identify the minimum element in the list. This reduces M from being the largest element to being the difference between the largest and the smallest element.
Edit:
Why divide by m, when you can divide by M*C. Where C will speed this portion up by a factor!
You can find the largest element in a list in O(1) time with n^2 processors[0]*.
Division of the list by that number is O(1) with n processors
Therefore the operation is O(1)
[0]* on a CRCW PRAM https://www.cpp.edu/~gsyoung/CS535/CS535Notes/Part2PRAM.pdf#...