If developers are incentives by the possibility of winning $1m, they would start working months in advance. That's why it's not ok to offer $1m as a hackathon prize, as it's not in the spirit of hacking.
It doesn't make sense to say "Hackathon, 1 million dollars, Go!".
edit: To add. The problem should be announced the day of!
Apologies for the very long sentence, I love commas and am the arch-nemesis of conciseness.