What are the subject areas/topics that Google HashCode focuses on? Can you please specify the algorithms that one should focus on and some resources where one could practice for this contest? Which language is most suitable/preferred for the contest?