Who is Eligible
You are eligible if you meet the following requirements at the time of registration:
-
You are 13 years of age or older (only those who are 18 years of age or older as of September 18, 2008 are eligible to attend the local onsite round and the onsite finals.)
-
You are not a current employee/intern of Google Inc., an employee of any Google affiliate or subsidiary.
-
You are not an immediate family member (parent, child, sibling, or spouse) of, or living in the same household as, a Google employee or an employee of any Google affiliate or subsidiary; and
-
You are not a resident of any of the following countries or provinces: Burma (Myanmar), Cuba, Iran, North Korea, Quebec, Sudan and Syria, or anywhere where the contest is prohibited by law. Burma (Myanmar), Cuba, Iran, North Korea, Sudan, and Syria are restricted by US export controls and sanctions programs and are therefore not eligible to participate in Code Jam.
For more details on the Eligibility rules and regulations, please review the Terms and Conditions.
How to Register
You can register for Google Code Jam at http://code.google.com/codejam/contest/registration. Registration opens at 4:00 p.m. UTC (9:00 a.m. PT) on Tuesday, June 17 and you can register anytime until the end of the 24 hour Qualification, 11:00 p.m. UTC (4:00 p.m. PT) on Thursday, July 17. Advancement from the Qualification round is necessary in order to participate in Round 1.
How it Works
- Duration
-
Contests may vary in duration, ranging from 1.5 hours to 3 hours with the Qualification Round lasting 24 hours.
- Environment
-
You can use any programming language to solve the problems, using any development environment or text editor.
- The Problems
-
Each contest consists of three to six 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.
- How to Solve the Problem
-
Download, Re-download, and Pre-download Zipped and Encrypted Input Files
- Download Inputs
-
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.
- Re-download Inputs
-
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.
- Pre-Download Inputs
-
You can pre-download encrypted input files for the large input/output sets. You should consider this option if you have a slow network connection.
The encrypted input files appear within the 'More Options' drop-down menu next to the large input files. Once you pre-download the encrypted inputs, you need to download the decryption key.
- Decryption Key
-
The decryption key appears within the download section of the 'More Options' drop-down menu. The eight-minute timer will begin running as soon as the decryption key finishes downloading. You can re-download the decryption key during the eight-minute time period.
To perform the decryption, you'll need decryption software for your particular operating system:
Windows
One quick solution is to download GPG installer from this website: http://www.gpg4win.org/
Linux
Depending on your distribution, all you need to do is install the GnuPG package.
Mac
You can get the Mac GPG from here: http://macgpg.sourceforge.net/
After you have GPG installed, you can start decrypting the files. To decrypt the file 'A-large.in.enc' and output the decrypted file to 'A-large.in', use the following command on the command line:
gpg --output A-large.in -d A-large.in.encNext just enter the key when you are asked to enter a passphrase. That's it!
- Submission Rules and the Judge
-
Each problem will have two input/output sets, one small and one large. Small and large sets have different submission rules:
-
Rules for Small Input/Output Sets: After downloading your small input file, you'll have four minutes to run your program on our input and submit the output (along with your source code). If you take too long or output the wrong answer, the attempt will be marked as incorrect. You may attempt to solve the input/output set again, but you'll need to download a new input file (which may have different test cases). You'll know immediately if your answer was correct.
-
Rules for Large Input/Output Sets: After downloading the large input file, you'll have eight minutes to submit the output (along with and your source code). There is only one input file, but you can submit as many times as you wish during the eight minutes. Your last submission counts as your final answer. You'll find out if your answer was correct after the contest.
*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.
File Type for Source Code
You 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.
-
- How You Can View Your List of Submissions
- How We Will Judge Your Submission
-
-
Differences in whitespace are ignored. Every non-empty sequence of whitespace characters is treated as a single space. This means that Unix, Mac, and Windows endlines are all acceptable.
-
Leading and trailing whitespace on each line is ignored. The remaining, non-empty lines are compared pairwise, using rules 1 and 3.
-
Two floating point numbers are considered equal if their absolute or relative difference is smaller than 1e-6. This does not apply to integers. Two integers are considered equal only when they are exactly equal.
-
- Source Code Submission Rules
-
Uploading Source Code
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 Code
You 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 Hand
If 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 language
If you use specific software to solve a problem, specify this in the file. Also, please provide any input scripts you wrote for the software (e.g., mathematical software scripts, Excel spreadsheet).
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, Matlab interpreter commands, shell commands, etc.
Solving problems using several programs
If 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 libraries
You 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 ACM ICPC, 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.
How to Win
- Point Structure
-
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.
- Penalty Time and Ties
-
If there is a tie in points, the contestant with the lowest penalty time wins.
-
Penalty Time = Total submission time of the last input you correctly solve (time is measured from start of contest) + four minutes for each incorrect small submission (only for problems you eventually solve)
-
For example, if you have made the following submissions:
[17m10s] wrong submission for A-small
[17m35s] wrong submission for A-small
[18m15s] correct submission for A-small (10 points)
[29m30s] wrong submission for B-small
[30m59s] correct submission for C-small (30 points)
[45m11s] correct submission for A-large (15 points)
then your score will be 55, with 53m11s of penalty points (45m 11s + 2*4m)
How to Track Your Performance
-
You can monitor performance in four different areas of the competition arena:
-
status messages
-
submission panel
-
mini-scoreboard
-
full scoreboard
-
- Status Messages
-
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.
- Submission Panel
-
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:
-
No submissions - Displays if you have not downloaded the large input/output set
-
In progress - Displays if you have downloaded the large input/output set and the 8 minute timer is counting down
-
Time Expired - Displays if you have downloaded the large input/output set, but did not submit a solution
-
Submitted - Displays if you have downloaded the large input/output set and did submit a solution
After the contest, the submitted state will change to either 'correct' or 'incorrect,' depending on how you did.
-
- Mini-Scoreboard and Your Score and Rank
-
Below the submission panel, a mini-scoreboard displays the most up-to-date Top Scores. If you have a top score, your nickname appears in the mini-scoreboard. However, your rank and score always appear in the top right-hand corner above the problem interface.
- Full Scoreboard
-
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.
How You Can View Your List of Previous Submissions
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.
How to Be a Spectator
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 clicking on the 'spectator' link on the front page below the registration button. 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 rounds, you can enter the Code Jam contest as a spectator after the contest begins. Like the spectator for 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.
How to Practice
Before the contest begins, you can practice on problems from sample contests. Since this competition differs from previous Google Code Jams, 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 ACM-ICPC and TopCoder contests to brush up on your coding skills.
How to Ask the Administrators Questions
Google administrators are available during the contest and 30 minutes before/after a 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 displays next to your 'Ask a question' link, indicating how many unread conversations you have.
How to Interact With Other Participants
- Collaborating With Other Participants
-
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.
- Chatting With Other Participants
-
You can chat with other competitors using the Channel
#gcjon 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.
-
Run:
/server chat.freenode.netfrom inside your client. -
Then type:
/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.
-
Type:
/msg nickserv recover 'nickname' 'password'. This locks the nickname so no one else can use it, and boots existing users. -
Type:
/msg nickserv release 'nickname' 'password'. This unlocks your account so you can use it. -
Finally use the usual
/nick 'nickname'to reclaim your nickname.
-
How to Advance to the Finals
- Qualification Round
-
The contest will start with a Qualification Round on July 16, 2008 at 11:00 PM UTC (4:00 PM PT). This round will run for 24 hours, ending on July 17, 2008 at 11:00 PM UTC (4:00 PM PT), and will consist of three problems.
- Online Round 1
-
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 sub-rounds in Online Round 1 will take place from Friday, July 25 to Thursday, July 31.
After the completion of the 24 hour Qualification Round, we'll email the advancers, requesting that they register for three preferred provided contest times in Online Round 1. Advancers must register for their assigned times by: by Monday, July 21 at 1:00 PM UTC (6:00 AM PT).
Each advancer will be able to participate in a maximum of two contests for Round 1. You only have to participate in one of the two 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: You'll not be able to change your assigned sub-round dates or times.
The top scoring finalists from each sub-round, totaling 2520 skilled programmers, will advance to Round 2. If you qualify to Round 2 in your first assigned sub-round, you may not participate in your second assigned sub-round. The next contest you participate in will be Online Round 2.
- Online Rounds 2 and 3
-
The top 2520 participants from Online Round 1 will participate in Online Round 2, which will begin on Saturday, August 2, 2008 at 4:00 PM UTC (9:00 AM PT) and will end on Saturday, August 2, 2008 at 6:00 PM UTC (11:00 AM PT).
The top 1000 participants from Online Round 2 will participate in Online Round 3, which will begin on Saturday, August 9, 2008 at 4:00 PM UTC (9:00 AM PT) and will end on Saturday, August 9, 2008 at 6:00 PM UTC (11:00 AM PT).
- Local Onsites
-
The competitors with the top 500 scores from Round 3 will advance to the local onsite rounds, with at least 50 advancing from each region. The local onsite rounds will be divided into three regions: Europe, Middle East, and Africa (EMEA); the Americas; and Asia Pacific. Participants will be sent to a Google office in their region. All local offices within a region will compete at the same time on the same problem set. For example, the contestants competing in Zurich, London, Krakow, and Munich will all compete on the same problems at the same time on Monday, October 6.
The Top 100, with no less than 10 from each region, will qualify for the onsite final round.
Prize Overview
- What you can win
-
The top 500 scoring participants in Round 3 will receive a Google Code Jam t-shirt.
The top 500 participants in Round 3 will participate in the local onsites at a Google office in their region. Travel and accommodation will be covered by Google.
The Top 100 finalists from the local onsites will be flown to Mountain View, California to compete in the onsite finals. Travel and accommodation will be covered by Google.
All 100 finalists who attend and compete at the onsite finals in Mountain View will receive the following prizes:
Competitor(s)
Prize
1st Place
$10,000
2nd Place
$5000
3rd Place
$2500
4th – 10th Place
$1500
11th – 30th Place
$1000
31st – 50th Place
$750
51st – 75th Place
$500
76th – 100th Place
$250
In addition, if you are the 1st place winner, you'll receive ten free lunches (for you and a guest) at Google. Whenever you are in a city with a Google office that provides lunch from November 14th 2008 to November 14th 2009, you can check out the office with a guest and be hosted for lunch (maximum of 10 visits).
Please see the Terms and Conditions for more details.