I know some of these points have been mentioned/addressed in other threads
I was disappointed to hear that this would be judged on the total run time (including I/O). I/O consumes 90% of the run time (in my tests) and I've seen it vary from run to run by as much as 100%. Once I found this out, I immediately stopped optimizing my QuickSort and started working on the I/O. I was able to cut the I/O time by 50% (over scanf/printf) but would have preferred to spend that time on the QuickSort where I would have worked on improving memory allocation. It would have been more interesting ... and I think more in the spirit of the contest, but would have had a much smaller payoff.
I hope that the tests will be run multiple times for each submission and that outliers will be discarded. You may wish to consider using a dedicated drive or some form of SSD. I know SSD's are not generally as good at serial access, but they are not prone to fragmentation problems or the mechanical delays assoicated with disks so they should produce a more reliable/repeatable test.
I also hope that some of the tests will include ascending and descending sequences, this is often a worst-case for many quicksorts (include the one given as an example).
TBB
It's been years since I've written any C++ (and I haven't missed it). It's fair to say that I'm syntactically challenged. More tbb examples would be great, especially simple ones that isolate a single feature. I wondered if there was a way to tell if the scheduler was already running. I wanted to put code in that would start the scheduler if it wasn't running and terminate it only if I had started it, but I didn't see a way to do
All in all I enjoyed myself and I don't envy y'all the task of running all the tests and reviewing all that code.
Thank you for conducting this contest and I look forward to the results and the future problem sets.