I agree it is definitely a different type of exam than, say, the Putnam (
Putnam Directory).
I don't know details about Putnam competition so I cannot comment here.
However, if the solution to a problem (e.g. bin packing or graphics rendering) is taught to all CS majors who comprise the competition, where is the challenge
I feel we are going in circles. Which problem are you pointing to?
There is no algorithm taught in school that will be sufficient to solve ACM problems. In the best case, you may find a similarity with a problem from past olympiads and extrapolate a solution.
This is international olympiad level. Dan can say more about Math International Olympiad problems to make a parallel.
Is it a programming or a computer science competition?
Neither of them. Algorithms is the only focus at all Informatics olympiads (high-school and ACM).
Programming can be done in any language. When I was in college, most people were using C or Pascal. No need for OOP.
Do they read your code and grade you on quality? Or does the ugliest but quickest written code win?
It does not matter the code beauty, does not matter the speed.
All that is important is to get the right results at all tests and of course to finish coding in allocated time.
Some informatics contests do involve a quick code review. The goal is to validate the algorithm from a general perspective. For instance, if I am unable to solve a problem, my goal is to get 10% of results right. I code a Monte Carlo style algorithm if the range of results is small and I may be lucky a couple of times. The results would be canceled if found in the review.