Sign in
 
 

Frequently Asked Questions

Registration

Who is eligible?

The exact details are explained in the Terms, but here are some of the requirements that you have to meet at the time of registration:

  • You are 13 years of age or older. Only those who are 18 years of age or older around the time of the final round (see the Terms for the exact date) are eligible to attend the onsite finals.
  • You are not a current employee/intern of Google Inc., or an employee of any Google affiliate or subsidiary. If you have a job offer from Google, you must stop competing when you become an employee. Note that if you advance to the final round, and become a Google employee before the final round, you will not be eligible to travel to or compete in the final round.
  • 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.
  • You are not a resident of Quebec, Saudi Arabia, Cuba, Syria, Burma (Myanmar), or anywhere that the contest is prohibited by law.
How can I register?

After registration opens, and before the end of the Qualification Round, you can register for Google Code Jam at http://code.google.com/codejam. You can tell whether registration is open by checking our schedule.

Rounds

What are rounds?

Google Code Jam takes place over the course of multiple "Rounds," fixed time frames in which contestants compete to solve a set of algorithmic problems. Rounds take place at scheduled times. Contestants who do well enough in a round advance to future rounds, until the finals, in which the champion is decided. Rounds are of different lengths, varying from 2 hours to 4 hours; except for the Qualification Round, which lasts 25 hours.

What are the rounds?

We run different tournaments on the Google Code Jam website, with different round structures. Here is how the round structure works in Google Code Jam 2012:

Qualification Round: The Qualification Round is the first round, and lasts 25 hours. You don't have to be ready to compete at the start of the Qualification Round; it's 25 hours long so that people around the world can compete at a time that's convenient for them. We recommend setting aside up to 2 hours out of the 25 to compete, though of course you can spend as much or as little time as you like within 25-hour period. Any contestant who earns a fixed number of points, which will be displayed on the contest dashboard, will advance from the Qualification Round and be eligible for the First Rounds.

First Rounds: There are three first rounds: Round 1A, Round 1B and Round 1C. Each lasts for two hours, thirty minutes. You can compete in all three of the first rounds if you want to, or in any one or two of them; but as soon as you place in the top 1000 of a first round, you have qualified for Round 2 and you will not be allowed to compete in later first rounds.

Round 2: The 3000 contestants who advanced from the first rounds compete in this round. It lasts two hours, thirty minutes. The top 1000 contestants win shirts, and the top 500 contestants advance to Round 3.

Round 3: The 500 contestants who advanced from Round 2 compete in this round. It lasts two hours, thirty minutes. The top 25 contestants advance to the Onsite Finals. If any of those contestants are unable to attend the Onsite Finals for any of the reasons listed in the Terms, Google may advance contestants ranked below 25th place to replace them.

Onsite Finals: The top 25 contestants in the world travel to a Google office and compete for the grand prize, and the title of Code Jam Champion!

There is a round happening right now, but I can only watch. Why?

First, make sure that you're logged in with the same Google Account that registered for Code Jam. If you are, there are a few possible reasons: if this is Round 1B or Round 1C, perhaps you already advanced to Round 2 in an earlier Round 1. Or perhaps you failed to advance to the round currently taking place. If you received an email from Google saying that you're eligible for the round, you're logged in with the right account and you're still unable to compete, please contact us immediately at codejam@google.com and we will investigate.

Competing in a Round: Tools

What programming languages can I use to solve the problems?

You can use pretty much any programming language or languages you like, with the proviso that the compiler or interpreter for the language you used is freely available. See the Terms for the details. Some specific things worth mentioning: Visual Studio is acceptable, because of Visual Studio Express. Likewise with MATLAB, because of open-source versions like Octave. Interpreters and compilers that require you to have Windows or Mac OS X installed are acceptable (if they aren't unacceptable for another reason). Time-limited trials of compilers and interpreters that cost money are not acceptable. Maple and Mathematica are non-free, and not acceptable.

What development environments can I use?

You can use any development environment or text editor, including those that cost money. Bear in mind that the programming language you use must have a free compiler or interpreter.

What OS and browser should I use?

You are free to use whichever operating system you wish for solving the problems. We continually test the website on Linux, Windows and Mac OS to make sure it works on as many operating systems and browsers as possible. The site should work with most modern browsers; if you're having trouble with yours, please let us know and fall back to Chrome, Firefox 3+ or Internet Explorer 7+ while we examine your issue.

What programming languages would you recommend?

Many of our contestants use C++, Java and Python, though occasionally Python's slowness at dealing with large sets of numbers can pose a problem. Our contestants have used a wide variety of languages to compete in Code Jam, though we aren't certain that we'd recommend LOLCODE and Piet. See a site set up by one of our contestants, at http://go-hero.net/jam, for a look at what languages people used in previous Code Jams, and how that distribution changed in later rounds.

Can I use code that I don't write during the contest?

As long as you have a license to use it, and it was written before the contest, yes. Make sure to submit all code that you used, unless it comes from a standard library that's available online (in which case you should put a comment in your code to that effect). That means you can write your own helper code, or collect your own personal library of code, as long as the license terms of the code permit it. Some Code Jam contestants will have competed on an ACM ICPC team, and many of those teams have their own code books; check with your team's coach whether it's OK for you to use that code in a different context.

What other resources can I use?

You're welcome to use any documents written before the contest started, including web pages. Discussing Code Jam problems with other contestants, or anyone else, during the contest is not allowed. Likewise you aren't permitted to write about the problems in a round until after the round is over.

What is considered cheating?

Collaborating with anyone else during the contest is strictly prohibited and will result in your disqualification. This includes discussing or sharing the problem statements or solutions with others. Participating with multiple accounts is also prohibited. If we believe that you have undermined the integrity of the contest, we reserve the right to disqualify you. Use your best judgment. If you have a question about whether something is allowed, please ask an administrator, either by clicking the "Ask a question" link during a contest or by mailing us at codejam@google.com.

If you suspect another contestant of cheating, please report it.

Competing in a Round: Mechanics

A round is starting soon. Where do I go to compete?

For global Google Code Jam rounds, go to http://code.google.com/codejam. There will be a countdown timer that counts down to the start of the round. For other tournaments, go to the home page for that tournament: for example, http://code.google.com/codejam/africa_arabia. If you can't find the round you're looking for, chances are it isn't running at the time you expected. Check the schedule to be sure.

How do I compete in a round?

Our Quick-Start Guide will show you the basics of how to compete. If there's no round running right now, you can use the guide to practice, which will teach you what you'll need to know.

How do I ask questions about the round?

We can't give any hints about how to solve the problems, but there are a few reasons why you might want to ask us a question. Perhaps the Code Jam website isn't working properly for you; or you think a problem statement is ambiguous; or you think we've made a mistake. Click the "Ask a question" link on the left-hand side of the contest dashboard, select which problem your question is about (or "General" if it isn't about any one of them) and ask, in English only.

We'll answer (in English) as quickly as possible. You'll know we've responded when the "Ask a question" link becomes bold and gains a (1) next to it. If we decide that a question about a particular problem is unambiguously answered by the problem statement, we will typically answer "Please read the problem statement." In some cases we will decide that your question should be answered for all contestants, and we will broadcast the question and its answer to everyone.

If the site is behaving in such a way that you cannot use the "Ask a Question" interface, contact us at codejam@google.com.

Do I have to solve the problems in any particular order?

You can answer the problems in any order you like. Looking at a problem does not start any timers, so you can read all of them at the start and solve them in the order of your choice. There are different point values for each input in each problem, and we generally give lower point values to the questions we think are the easiest.

How is the winner of a round determined?

Each problem has set point values for its Input/Output sets (see below to learn more about Small and Large sets). When you solve a set correctly, you get the number of points indicated. The contestant with the highest score wins. In the event of a tie in points, the contestant with the lowest penalty time wins.

Penalty Time = Time of the last submission that earned you points (time measured from start of contest) + four minutes for each incorrect Small submission (for Small inputs 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)
[59m45s] wrong submission for C-Large

...then your score will be 55, with 53m11s of penalty time (45m11s + 2*4m).

Note that we may have Input/Output sets that aren't Small or Large, and we might specify penalty rules for those sets.

Competing in a Round: Submissions

What are the time limits and other rules surrounding submissions?

Most problems historically have had two Input/Output sets: one Small and one Large. Small and Large sets have different submission rules. A submission starts when you choose to download the input.

  • Rules for Small Input/Output Sets: You will have four minutes to download the Small input file, run your program on the input and submit the appropriate output (along with your source code). If you take too long or submit 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 will know immediately whether your answer was correct.
  • Rules for Large Input/Output Sets: You must correctly solve the Small Input/Output set before you may download the Large input file. You will have eight minutes to download the Large input file, run your program on the input and submit the appropriate output (along with 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, and you will not be able to try again with a new input file. You will 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.

How do I open the .in file that I downloaded?

The ".in" files are simply text files. You are required to write a program that takes the text from the .in file as input and produces some output (as defined by the problem statement). If you would like to look inside the .in file, you can open it in a text editor. Wordpad and Notepad++ will work, as will any other editor that understands UNIX endlines. Warning: Notepad will generally display .in files incorrectly.

What are the requirements for uploading source code files?

You must upload all of your code in addition to any non-standard libraries you used to solve each Input/Output set. Uploading source code files larger than 100kB is not allowed. You may upload a ZIP archive containing multiple files, as long as their total uncompressed size does not exceed 1MB. If you use a standard library that's available on the Internet, and it's too large to upload, put a comment in your source code explaining where the library is available.

What if I solve a problem by hand?

Instead of code, upload a text file briefly explaining that you solved the problem by hand. Google reserves the right to disqualify any submissions that we believe do not comply with the Terms.

What if I uploaded the wrong source code, or the wrong file entirely?

If you uploaded the wrong file for a Small Input/Output set (not a Large set), you can contact the judges during the contest only using the "Ask a question" link and they will mark your earlier attempt wrong, allowing you to try again.

If you uploaded the wrong file for a Large Input/Output set at the Onsite Finals only, during the contest only, you can contact the judges using the "Ask a question" link and they will instruct you on how to submit your code.

After a round, if Google discovers that someone submitted the wrong source code, we'll assess how wrong it is, taking other code the user submitted into account. If it's slightly wrong, we'll assess a four-minute penalty-time penalty. If it's very wrong, we'll mark the submission as wrong.

How can I confirm that I uploaded the right files?

You can double-check the submissions you've made by clicking the "View my submissions" link on the left panel of the contest page. This page will let you download the input, output and source code for 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 will my submission be judged?

For the most part, your submission will be compared character-by-character to the judges' output. More precisely:

  1. Minor differences in whitespace are ignored. In particular, every non-empty sequence of whitespace characters (except newlines and non-ASCII characters) is treated as a single space. Unix, Mac and Windows endlines are all acceptable ways of ending lines.
  2. Leading and trailing whitespace on each line is ignored. The remaining, non-empty lines are compared pairwise, using rules 1 and 3.
  3. Two floating point numbers are considered equal if their absolute or relative difference is smaller than 1e-6, unless the problem statement says otherwise. This does not apply to integers. Two integers are considered equal only when they are exactly equal.
Some problems specify different rules for judging. For example, in some problems there can be multiple correct outputs.

Why might a submission be rejected?

Sometimes when you submit a malformed or over-sized submission, your submission will be rejected without being judged. You'll be able to resubmit in the time you have left without penalty. Here are some error messages you might receive when that happens, followed by the reason for the message:

How do I know if I solved a Small Input/Output set correctly?

A message will appear in yellow above the problem interface telling you whether you solved it correctly or not.

How do I know if I solved a Large Input/Output set correctly?

The judgments for the Large inputs will not be available until the end of the round. During the round, we will show your score and rank as though you (and everyone else) had successfully solved every Large set. At the end of the round, the scoreboard and dashboard will reflect the final judgment.

Dealing with 502 Errors

What is a 502 error?

We have recently received reports that a small fraction of contestants received these errors when they tried to submit their output. A 502 error is an indication that your submission didn't get to Google's servers, or arrived at our servers malformed. This can be caused by an incorrectly-configured proxy. All of our reports so far have come from China.

What should I do if I got a 502 error?

Try submitting from a different browser. If that doesn't work, try competing from http://codejam-prod.appspot.com/codejam. That's just an alias for http://code.google.com/codejam, but using it can solve the problem. If that doesn't work, you'll have to investigate your proxy settings.

How do I know for sure that I got a 502 error?

  1. If you weren't directed here by an error message from the contest dashboard, you almost certainly didn't get a 502 error.
  2. If you were, open the "Network" tab of your your browser's "Developer Tools" (usually hitting F12 will do that).
  3. Reload the dashboard. Notice that most requests are "GET" requests, and return code 200.
  4. If your submission is still active, try to submit again. If it isn't still active, you can download and submit again, but we will not compensate you for consequences of the extra download.
  5. The submission request will show code 502 if it was a 502 error, or a different code (probably 500 in case of failure, or 200 if it succeeds) otherwise.

The reason we can't tell you for sure on the dashboard whether you got a 502 is that the mechanism we use for submitting problems uses a hidden iframe, which doesn't expose the HTTP status code it received.

Is this a new problem?

We only learned about this error recently, so we're still gathering information about it. We believe that the steps listed above should resolve most 502 issues, but we won't know until we hear from more users who have had the same problem. If you have a 502 error (or we incorrectly tell you that you got a 502), please let us know at codejam@google.com. Include your geographic location, and let us know what worked and what didn't.

Competing in the Onsite Finals

Do I need a passport or visa to go to the Onsite Finals?

You're solely responsible for determining what travel documents you need in order to travel to the onsite finals, including passports and visas, as well as obtaining those documents. Once you've qualified for the final, a Google travel specialist will be in touch with you, and may be able to help you with in the process. If you need one, Google will send you a visa invitation letter; if you need a visa, it's recommended that you make an appointment with your local embassy as soon as possible.

What hardware will I have access to?

We will provide computers, which will dual-boot into Windows and Linux. You will have administrative privileges on your computer. You can bring your own keyboard if you like, though we'll have to inspect it before the round. You can also bring data storage media, such as CDs and USB keys, as long as they don't serve any other communication purpose (e.g. giving you Internet access). No other computing or communication equipment may be used during the competition. If you have a question about any of this, or need an exception (for example due to a disability), please contact us at codejam@google.com.

What software will I have access to?

We will send finalists a list of text editors, compilers, interpreters and other software to be pre-installed on the machines at least 7 days before the final. Before the round starts, you will have Internet access. You can install your own software from storage media that you brought, or from the Internet, as long as it doesn't violate Code Jam's Terms (or, of course, local law).

What if my computer breaks?

This hasn't happened to us yet, but it could. We'll move you to another computer if something goes wrong with the computer you're on, but if it happens during the contest we won't give you Internet access. Because of this, we recommend that you bring any additional software with you on physical media, rather than depending on being able to download it from the Internet.

What can I bring on the competition floor?

You can bring a keyboard; physical storage media; and a small number of printed materials. Music players are fine, as is playing music on your computer, if you bring headphones and listen at a volume that doesn't disturb the other contestants. We will not provide headphones. Downloading music illegally onto our computers is, of course, illegal.

Can I attend the finals if I'm not a finalist?

No, unfortunately you can't.

Using the Code Jam Site

How can I see my status in the competition?

The contest dashboard, which is the page you go to in order to compete, has a number of ways of tracking your status.

At the top of the page, you can find several pieces of information. You can find the time left in the contest, your current rank, your score assuming you solved all Large sets correctly, and a link to the full contest scoreboard.

The "Submissions" panel on the left tells you which problems you've attempted, and your status on each. Problems you haven't attempted yet are shown as "No submissions". Input/Output sets for which you've downloaded the input but not yet uploaded an output are marked "In progress...". If no submission is currently in progress, Small sets may give a number of incorrect attempts, or say "Correct"; Large sets may say "Submitted" or "Time expired".

The "Submissions" panel also lets you see which Small Input/Output sets have been attempted by other users, and how many of them solved each correctly, for an at-a-glance check of what's likely to be the easiest remaining problem.

The "Top Scores" panel of the left shows the scores of the top 10 competitors. Those scores assume that all of their Larges were correct.

The "View my submissions" button on the left lets you see all of your submissions so far. You can see what their status is, and download the input, output and source code files for those submissions.

The contest scoreboard, which appears on a different page, lets you see details of each user's submissions, including time submitted and how many wrong attempts they have on Smalls. There are aggregate statistics about each Input/Output set at the bottom. There's also a Friends tab, for tracking the performance of your friends, and a Closest Competitors tab, which as far as we know is used by nobody... but it's there if you want it!

How can I watch a round?

Visit the contest's home page (e.g. http://code.google.com/codejam) while a round is running, and if you aren't eligible to compete you should see links to "Watch" and to "Read the Problems." If you want to see how a friend or friends are doing, click "Watch", make sure you're logged in with a Google Account, and go to the "Friends" tab. Go to the "Add Friend" area in the top-right and enter your friend's Code Jam nickname, case-sensitive. Then you can watch as your friend climbs the ranks to victory (hopefully).

How can I practice?

Before you ever participate in a round, it's a good idea to get used to how the platform works. Even if you have participated before, it can't hurt to try out a few extra problems, and sharpen your skills! Visit our Practice and Learn page, which is all about how to practice for Code Jam.

About Code Jam

Are the questions available in other languages? Can I use a translator?

Because programming problems often require very precise language, the risk of mistranslating a problem is too great, and the consequences are very severe: a single wrong word can give a very real disadvantage or advantage to contestants reading it. Because of this, we've decided not to make the problems available in more than one language. You may use the mechanical translator of your choice. Talking about the problems with other people, even translators, is not allowed.

How are Google Code Jam problems prepared?

We've described the process in our problem preparation guide.

Interacting With Other Participants

How can I find other Code Jam participants?

There are a few places to find other Code Jam participants. The primary one is our mailing list. You can also find other Code Jammers on our IRC channel.

How can I find other Code Jammers on your IRC channel?

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.

Next, 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.net from 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.

If your nickname has been taken the next time you sign on, read the following instructions to get it back.

  1. Type: /msg nickserv release 'nickname' 'password' . This locks the nickname so no one else can use it, and boots existing users.
  2. Type: /msg nickserv release 'nickname' 'password' . This unlocks your account so you can use it.
  3. Finally use the usual /nick 'nickname' to reclaim your nickname.
Can I communicate with other participants during a round?

Not about Code Jam, no. 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.