
You are eligible if you meet the following requirements at the time of registration:
For more details on the Eligibility rules and regulations, please review the Terms and Conditions.
You can register for Google Code Jam at http://code.google.com/codejam/contest/registration. Registration opens at 23:00 UTC (4:00 PM Pacific Time (PT) in the Americas) on Monday, August 10 and you can register any time until the end of the 26-hour Qualification Round (Friday, September 4 at 01:00 UTC). Advancement from the Qualification Round is necessary in order to participate in Round 1.
Contests may vary in duration, ranging from 2 hours to 4 hours with the Qualification Round lasting 26 hours.
You can use any programming language to solve the problems, using any development environment or text editor, as long as the compiler or interpreter you used for that language is freely available and easy to download and use. Time-limited trials for compilers and interpreters are disallowed. Visual Studio is acceptable as a compiler, since there's a free version of (almost the same) compiler available, Visual Studio Express. Google reserves the right to make further exceptions on a case-by-case basis.
Each contest consists of 3 to 6 algorithmic problems. The problems will be listed in the panel on the top left side of the page. Click on a problem link to view the different problem statements, which will appear in the middle of the page.
The problem statement will be an HTML file, possibly containing images. It will include one or more sample test cases and will have two input/output sets, one small and one large. There will be an assigned point value next to each input/output set.
Download and Re-download Zipped Input Files
For both the small and large inputs, you can download either a text file or a zipped file. The text file will appear as a link next to the small or large input. Zipped files are a great option if you are experiencing a slow network connection. The zipped file appears within the 'Download' section of the 'More Options' drop-down menu.
The timer begins immediately after you download an input file. You have four minutes for the small input/output sets and eight minutes for the large input/output sets.
If you do not correctly solve the small input/output set or if you run out of time, you have to download a new input file. The input files are randomized, so you may receive a new input file with different test cases.
You have one chance, lasting eight minutes, to solve the large input/output set. You may resubmit during this time. If you run out of time, you cannot download another large input file.
You may re-download your input file for the small and large inputs any time during the four- or eight-minute time period. You will receive the same input file during this time.
Each problem will have two input/output sets, one small and one large. Small and large sets have different submission rules:
*Note: You may experience latency issues between your computer and our servers and are therefore advised to submit with an adequate amount of time remaining in your four- and eight-minute periods.
Click the "View my submissions" link on the left panel. This page lists the input, output and source code of each of your submissions. For submissions to large input/output sets, only your most recent submission will be available. You can only download your output and source code if you have submitted them.
You must upload all source code used to solve each input/output set at the same time you are submitting your solution. You cannot submit your source code files after the contest. At the end of the contest, any user can view all of the source code submitted. Both the administrators and other contestants should be able to reproduce your output using your source code.
Deliberately obfuscated source code and empty source code files are not allowed. Google reserves the right to disqualify any submissions that we believe do not comply with the rules.
File Type for Source CodeYou must submit plaintext or zipped plaintext for the source files. The maximum file size that you can upload is 100kB. You can upload multiple files, or you can upload a zipped source code file as long as the contents do not exceed 1MB.
Solving Problems by HandIf you solve a problem either fully or partly by hand, please submit a text file explaining that you solved the problem by hand. We reserve the right to disqualify any submissions that we believe do not comply with the rules.
Solving problems using methods other than a programming languageIf you use specific software to solve a problem, specify this in the file. That software is held to the same restrictions as compilers and interpreters as described above. Also, please provide any input scripts you wrote for the software used (e.g., mathematical software scripts, Open Office spreadsheets).
The program does not necessarily need to produce the output automatically, so it can be interactive. If you wrote an interactive commandline script, you should submit all commands used to solve the problem, e.g. a linux commandline with awk, Hugs commands, Octave interpreter commands, shell commands, etc.
Solving problems using several programsIf you used several programs to solve a problem, even user-assisted programs, please submit all of the programs.
Solving problems using standard and non-standard librariesYou may use standard libraries, such as Boost, and other open source libraries. If you use a publicly available library, you may submit a link to the library's website rather than including the contents of the library in your source code submission.
You also may use code from non-standard libraries, such as coding libraries from your school's ACM ICPC team, as long as you have license to use them.
You will need to upload all code used in solving each input/output set, whether you are using standard or non-standard libraries. If the source code and the zipped version of the library are larger than 1MB, you may provide a link to the library as long as the library is accessible after the contest.
Each problem has set point values for its small and large input/output sets. When you solve a set correctly, you get the number of points indicated. The contestant with the highest score wins. Points scored in one round are used only to determine standing in that round; getting points in Round 1 will not help you win Round 2.
If there is a tie in points, the contestant with the lowest penalty time wins.
For example, if you have made the following submissions:
[17m10s] wrong submission for A-smallthen your score will be 55, with 53m11s of penalty time (45m11s + 2*4m)
You can monitor performance in four different areas of the competition arena:
Once you have submitted a solution to a small input set, a message displays above the problem telling you if your answer is correct or incorrect. If you do not answer a question correctly, you will learn that it is incorrect, but you will not be told further details about the incorrect submission (such as which test cases were incorrect).
The results for the large inputs will be available at the end of the contest.
The submission panel (on the left of the problem interface) summarizes the submissions you and your competitors have made. Each problem appears in the panel, along with the problem's point value and submission status. For small input/output sets, you will see the ratio of correct submissions for all participants and an updated status for your submissions.
For example, if you solve the question correctly, your status changes to 'Correct'. Otherwise, you will see '1 incorrect attempt', '2 incorrect attempts', etc. Once you solve a question correctly, the status changes to 'Correct.'
Since the solutions for the large input/output sets will not be judged until the end of the contest, you will see four states:
After the contest, the submitted state will change to either 'correct' or 'incorrect,' depending on how you did.
Below the submission panel, a mini-scoreboard displays the competitors with the highest scores. If you are one of those competitors, your nickname will apear in the mini-scoreboard. Your rank and score always appear in the top right-hand corner above the problem interface.
The full scoreboard shows statistics for all users who have submitted at least one correct solution. You have the option to select the information that you want to view on the scoreboard. You will always see rank, points, and penalty time for each contestant. If you check 'Time Submitted', you will see the amount of time it took for each contestant to solve each input/output set. If you check 'Number of Submissions', you will see how many attempts it took for users to solve the small input/output set.
To view statistics for your friends, click the 'Friends' tab on the full scoreboard. Then, enter your friend's nickname in the search box on the right (above the scoreboard), and click 'Add Friend.' You can also add a friend by clicking the star next to his or her username on the scoreboard. To view statistics for the competitors closest to your rank and score, click the 'Closest Competitors' tab.
You do not have to register for the Google Code Jam to view the problems and scoreboard. Five minutes after the Qualification Round begins, you may enter the competition area by following the contest title link on the front page. You can view the problems, but you cannot download the inputs for these problems or submit a solution. You can see participants on the scoreboard, but you will not see a tab for 'friends' or 'closest competitors'.
If you do not advance to Online Round 1, 2 or 3 or the onsite finals, you can enter the Code Jam contest as a spectator after the contest begins. Like spectators in the Qualification Round, you will not be able to submit solutions for the problems. You will be able to see the 'Friends' tab as an option on the scoreboard.
Before the contest begins, you can practice on problems from previous contests. It is a good idea to check out the competition arena and get comfortable with the interface, competition format, and types of problems that you will encounter in the contest. Click on any previous contest inside our competition section to practice on the problems from that competition. During practice there's no time limit to submit the problems, you can download the inputs and submit your output how many times you want.
You also can check out old problems from the TopCoder and ACM ICPC contests to brush up on your coding skills.
Google administrators are available during the contest, as well as 30 minutes before and after the contest, to answer any questions that you may have. Just click 'Ask a question' and select from the drop-down whether you have a general question or a question about a particular problem. Please ask your questions in English.
An administrator will respond to your question, either to you directly or to all contestants. When the administrator responds, a number in parentheses next to your 'Ask a question' link will indicate how many unread messages you have.
If the web site is behaving unexpectedly, feel free to ask a question. Make sure to include any error messages that you see.
When asked about the contest problems, the administrators will usually politely reply with "Please read the problem statement." Administrators will not reveal the particular test case for which your code gave the wrong answer, nor will they give hints on where to find bugs. If a problem statement is misleading, ambiguous or wrong, the administrators will typically broadcast the response to all contestants.
You are not allowed to collaborate with other participants or with anyone else, for that matter, during a contest. This includes discussing, sharing, or posting the problem statements or solutions. Any contestant found cheating or attempting to cheat will be disqualified.
If you suspect another contestant of cheating, please report any claims.
You can chat with other competitors using the Channel #gcj on Freenode.
First you need a client. One convenient client is Chatzilla, which is an add-on to Firefox. Many other clients can be used for basic IRC chatting.
Now, you need a connection. First connect to a Freenode server. There are many servers to choose from, but we'll show you how to connect to chat.freenode.net.
/server chat.freenode.net from inside your client./join #gcj -- and you are in!Finally, you need to register your nickname.
You can change nicknames using the command /nick 'nickname'. To register your current nickname, just type: /msg nickserv register 'password'.
To identify yourself as a registered user, log on to IRC using the same nickname and type: /msg nickserv identify 'password' to identify yourself as the owner of that name.
What if your nickname has been taken the next time you sign on?
If your nickname has been taken the next time you sign on, read the following instructions to get it back.
/msg nickserv release 'nickname' 'password' . This locks the nickname so no one else can use it, and boots existing users./msg nickserv release 'nickname' 'password' . This unlocks your account so you can use it./nick 'nickname' to reclaim your nickname.The contest will start with a Qualification Round on Wednesday, September 2, 2009 at 23:00 UTC (4:00 PM PT). This round will run for 26 hours, ending on September 4, 2009 at 01:00 UTC (6:00 PM PT), and will consist of three problems. You can log in at any time to participate in the contest. If you successfully solve one small and one large input from any of the three problems, you will advance to Online Round 1. There is no limit to the number of advancers.
Online Round 1 consists of several sub-rounds offered at different times to ensure that you have ample opportunity to participate in this round no matter what time zone you're in. The three sub-rounds in Online Round 1 will take place on Saturday, September 12 and Sunday, September 13. Note: The sub-round times are listed in UTC. Thus, the actual dates of the sub-rounds may be different in your time zone.
Each advancer will be able to participate in a maximum of either two or three contests for Round 1, as announced by Google over email after the conclusion of the Qualification Round. During registration, you'll have been asked for your preferred contest times in Online Round 1. You can change that preference until Saturday, September 5, 2009 at 00:00 UTC (Friday, September 4, 2009 5:00 PM PT). You only have to participate in one of your assigned sub-rounds. We'll endeavor to register contestants for their preferred sub-round times, but cannot guarantee that all contestants will received their preferred sub-round times. Note: Once they have been assigned, you will not be able to change your sub-round dates or times.
The top-scoring 1000 finalists from each sub-round, totaling 3000 skilled programmers, will advance to Round 2. If you advance to Online Round 2 from your first assigned sub-round, you may not participate in your second assigned sub-round. If you do not advance to Online Round 2 from your first assigned sub-round, you may participate in your second assigned sub-round for a final opportunity to advance to Round 2.
The top 3000 participants from Online Round 1 will participate in Online Round 2, which will begin on Saturday, September 26, 2009 at 16:00 UTC (9:00 AM PT) and will end on Saturday, September 26, 2009 at 18:30 UTC (11:30 AM PT).
The top 500 participants from Online Round 2 will participate in Online Round 3, which will begin on Saturday, October 10, 2009 at 16:00 UTC (9:00 AM PT) and will end on Saturday, October 10, 2009 at 18:30 UTC (11:30 AM PT).
The competitors with the top 25 scores from Round 3 will qualify for the onsite final round.
The top 500 scoring participants in Round 2 will receive a Google Code Jam t-shirt.
The top 25 eligible finalists from Round 3 will be flown to Mountain View, California to compete in the onsite finals. The onsite final will happen on November 13, 2009. Travel and accommodation will be covered by Google.
The 25 finalists who attend and compete at the onsite finals in Mountain View will receive the following prizes:
| Competitor(s) | Prize |
|---|---|
| 1st Place | $5,000 |
| 2nd Place | $2,000 |
| 3rd Place | $1,000 |
| 4th – 25th Place | $100 |
Please see the Terms and Conditions for more details.