Ignoring air resistance, the horizontal distance a thrown ball will
travel before hitting the ground is just the product of two simple
i) The time the ball spends in the air.
ii) The horizontal component of the balls velocity.
If you were standing on level ground, you would want to throw
the ball upwards at a 45 degree angle to make this product a maximum.
If you are standing on a tall building (where "tall" means
that its much much higher than you can throw), then the time that the
ball spends in the air is almost entirely determined by the height of
the building. In other words, throwing it upward or downward will not
change the time the ball spends in the air by a sizeable fraction.
Since you cant change the time spent in the air by much, the best thing
you can do to make the ball go farther is give it the biggest possible
horizontal velocity when you throw it. This is done by throwing it
horizontally, which is your answer [a].
If you worked this out exactly, you would find that you
should throw it just a tiny bit above horizontal, where the exact
amount would depend on the height of the building, the air resistance
etc. This would not change the answer to your question, though, since
the exact angle would be much closer to 0 degrees than any of the other
answers you list.
(republished on 07/11/06)