Bob pays 100 * 5 + 101 * 5. Each exchange has strict matching rules, it's called Matching Algorithm (MA). MA can be different for different markets and exchanges. But as far as I know, it's always available publicly (I doubt that traders would trade otherwise).
There is a large variety of how different MA set priority for orders at the same price. Suppose, there are more than 1 order at price=100. The most popular is FIFO, or Price-Time priority, meaning that the order that appeared first at price=100 will be matched first. But as far as I know, all MA have price priority. Which means Bob's BUY order would first be matched against price=100 and only then against price=101 and so on if necessary.
It doesn't matter whether Bob was aware of order(s) at price=100 or not.
Also, note that Matching Engine (ME) matches orders one by one. If both Bob and Donald sent equal orders and they arrived to ME even at the same nanoseconds, only the first among them will get execution at price=100. The other one will be matched against orders at higher price (if the order's limit price permits so).
Here is a video of market mechanics in action: https://twitter.com/bookmap_pro/status/963390817326063616
And here are two images demonstrating the "matching" process. The green and red lines are Best Bid and Best Ask accordingly. Green and red dots are executions of Buy and Sell orders accordingly. And the Heatmap represents the market depth (in your example - the resting orders of Alice and Rob) - see its colormap on the toolbar.
