What is Google Code Jam 2016?
For the 2nd year, Distributed Code Jam returns as a track of Google Code Jam. The contest challenges distributed coding, latency reduction abilities, and algorithmic coding skills by having contestants write code for a distributed environment.
We're excited to announce for this year: an additional online round of Distributed Code Jam, a larger grand prize, and the opportunity for 15 contestants (up from last year's 10) to compete at the 2016 Finals at Google's office in New York, New York.
Don't forget to mark your calendars for Tuesday, March 8th, 2016, when registration opens!
Schedule: Google Code Jam 2016
|Tuesday, March 8, 2016
Ends: Sunday, April 10, 2016 at 02:00 UTC
|Friday, April 8, 2016
|Saturday, April 16, 2016
||Online Round 1: Sub-Round A
|Saturday, April 30, 2016
||Online Round 1: Sub-Round B
|Sunday, May 8, 2016
||Online Round 1: Sub-Round C
|Saturday, May 28, 2016
||Online Round 2
|Sunday, May 29, 2016
||Distributed Code Jam Online Round 1
|Saturday, June 11, 2016
||Online Round 3
|Sunday, June 12, 2016
||Distributed Code Jam Online Round 2
|Friday, August 5, 2016
|Saturday, August 6, 2016
||Distributed Code Jam Onsite Finals
Who can apply for this scholarship ?
You may participate in the Contest only if you are 13 years of age or older at the time of registration, but you must be 18 years of age or older at the time of registration to be eligible for the onsite final round; if not, you are only eligible to win a t-shirt.
How can you apply ?
After registration opens, and before the end of the Qualification Round, you can register for Google Code Jam at https://code.google.com/codejam. You can tell whether registration is open by checking their schedule.
Can I still compete in Code Jam?
Yes, in order to participate in Distributed Code Jam you must participate in Code Jam and advance to Code Jam Round 2. You can participate and win in both tracks. The rounds will not overlap.
What languages are supported?
A full list of languages supported in the 2016 Contest will be added to this page before the start of Distributed Code Jam on May 29th, 2016.
What does a sample problem look like?
The longest sub sandwich
Your friends made a brave attempt to beat the world record for making the longest sub sandwich ever. They failed or succeeded (it doesn't really matter), and proposed to you to eat as much of the sandwich as you want to.
The sandwich is composed of N parts. Each part has a taste value for you, which might be positive (meaning you want to eat it) or negative (meaning you would prefer not to). Ideally, you would just eat the tasty parts, but it's rude to break out the middle of the sandwich. So, instead you want to eat some part from the beginning, and some part from the end; and to make the total taste of what you eat as large as possible (Note: it's OK to eat the whole sandwich, or to eat nothing at all). Return the largest total taste of what you can eat.
Your solution will run on 100 machines. Each machine will get 256MB of RAM and 2 seconds of running time. Your program can use the library methods GetN(), which will return the value of N, and GetTaste(i), which will return the taste value of the i-th piece of the sandwich (for 0 ≤ i < N).
1 ≤ N < 1010
-108 < GetTaste(i) < 108 for each valid i
Why did you develop Distributed Code Jam?
We want to ensure we're challenging competitors and providing an opportunity for programmers of all types to participate in Code Jam. We also saw this as an opportunity as there are currently no similar competitions in today's competitive coding landscape. Finally, we believe that distributed programming skills are an important part of a modern programmer's skillset and want to provide a platform for programmers to improve and refine those skills.
How do you actually judge my solution?
We have a cluster of virtual machines set up on Google Compute Engine on standby, waiting for your solutions. When you submit, the appropriate number of them get allocated as your nodes. We compile your solution and copy it onto the nodes, and once all the nodes are ready, we launch your nodes simultaneously (as much as it is possible to do anything simultaneously in a distributed environment).
How do I participate?
The guide for the Distributed Code Jam should answer your questions. See the resources below if there is something you need help with.
How do I test my solution?
There are a few tools you can use:
- For testing correctness, and debug your solution, use the Local Testing Tool, described in the last section of the guide. This will allow you to run your solution locally, on inputs of your choice, by using separate processes to simulate separate nodes. Note that if your program is memory-hungry, running many nodes through the tool might freeze your computer, so the tool might be unsuitable for large-scale testing. Also, the running times you get locally are not necessarily indicative of what will happen on our platform; in particular, message passing times are obviously very different.
- For gauging your performance, we provide a special "Test Run" problem. This will be a special problem, worth zero points, with only a small input, which will run on a hundred nodes. The point here is to allow you to take code you wrote, change it (to use fake inputs) and submit to see what the running time on our platform will be.
- Before you submit your large solution, we recommend you first submit the same solution to the small input of the same problem, to make sure you are using the correct input library and reading the input correctly.
Where should I look if my question is not listed?
If you did not find your question in the list above, please consult the general FAQ from Google Code Jam. For any other queries you can join our Google Group discussion forum or contact us by email.
Terms and Conditions
What's the least I need to know to use the competition arena?
There's a lot of important information in the official Terms and FAQ for Google Code Jam; and if you're competing, you should read them. But if you're on the site to practice your programming skills, or you just need a quick refresher on how the competition arena works, here are the steps you should follow:
- Open the competition arena to your round. [+]
- Read the problem. The first few sections will describe precisely what problem your program needs to solve. [+] Take careful note of the Limits section. This section will describe two different sets of limits: limits for the Small input and the Large input. This should give you some idea of how quickly your algorithm will need to run.
- Write a program that will solve the problem described, with the Small limits described, in less than ~3 minutes. Make sure your program accepts input and gives output in the format given; if you run it with the Sample Input as input, it should produce precisely the Sample Output (including the "Case #" text).
- At the top of the page, click to solve the small and download the input. During a real contest, a 4-minute timer will start as soon as we receive the download request. If you're practicing, there won't be a timer (but your code should still be able to solve the problem in 4 minutes).
- Run your program on that input, and save the result in a file. Submit that file as your output, and your source code as your code.[+] The server will respond in one of a few ways:If you run out of time before making a submission, it will be treated in the same way as if you submitted and were incorrect.
- Correct: Your submission was completely correct in every case!
- Rejected: The response should tell you what was wrong; often it means you submitted the wrong file. The clock is still ticking, so see if you can fix the bug before you run out of time.
- Incorrect: Your result was wrong, maybe even in just one test case. You can fix your program and try again as many times as you like. [+] You'll download a new input file every time, so don't use the old one again by mistake! [+]
- After you solve the Small input, the Large input will become available. Once your program is ready to deal with the higher limits, download the Large input. An 8-minute timer will start as soon as we receive the download request.
- Run your program and submit as with the Small. You won't know whether you solved the problem correctly until the end of the competition, though your submission could be rejected. [+] We won't stop the timer after you submit, so if you want to do some testing and submit again, you can do that. You'll only be judged on your last submission.
- Move on to another problem (there's a list on the left). Each input you solve correctly is worth a number of points that's written next to its download link; the contestant with the most points at the end of the contest wins. Ties are broken by which contestant got her last point first, with 4 minutes of penalty time given for each incorrect submission on a small input that you got right later.
GOOGLE CODE JAM TERMS AND CONDITIONS
Welcome to Google Code Jam!
These Terms and Conditions ("Terms") apply to Google Code Jam and all related Code Jam contests sponsored by Google Inc. (each referred to as a "Contest"). Please read these Terms carefully as they form a binding legal agreement between you and Google Inc., located at 1600 Amphitheatre Parkway, Mountain View, CA 94043, United States ("Google") with respect to the Contest.
Our Code Jam Contests vary and we may post specific rules ("Rules") for a Contest on the Contest website, which become part of these Terms and your agreement with us with respect to the Contest.
YOU MAY NOT SUBMIT AN ENTRY TO A CONTEST AND ARE NOT ELIGIBLE TO RECEIVE PRIZES UNDER A CONTEST UNLESS YOU AGREE TO THESE TERMS. YOUR SUBMISSION OF AN ENTRY IN A CONTEST CONSTITUTES YOUR AGREEMENT TO THESE TERMS.
The words "include" and "including" as used in these Terms mean "including but not limited to."
- 1. Eligibility.
- 1.1 VOID WHERE PROHIBITED. The Contest is void in Crimea, Cuba, North Korea, Sudan, Syria, Quebec, and where prohibited by law.
- 1.2 NO PURCHASE NECESSARY TO ENTER OR WIN. You do not need to purchase any Google product or service to enter or win the Contest.
- 1.3 Ineligible Individuals.
- (A) You cannot participate in the Contest if you are, and will be immediately disqualified and forfeit all of your prizes if you become:
- (1) a resident of Crimea, Cuba, North Korea, Sudan, Syria, or Quebec or anywhere that the Contest is prohibited by law;
- (2) restricted by applicable export controls and sanctions programs;
- (3) a current employee (including intern), contractor, officer, or director, of Google or its affiliates; or
- (4) an immediate family member (including a parent, sibling, child, spouse, or life partner regardless of where you live) of one of the individuals listed in subsection (3) above or you are a member of their household (whether related or not).
- (B) However, Section 1.3(A)(3) above does not apply if you are a Google Student Ambassador (whether paid or not) and you may participate in the Contest.
- (C) If you gained information on a problem while working as an employee, intern, contractor, or official office-holder of Google,
- (1) you may be disqualified if you attempt to gain points on that problem in the Qualification Round; and
- (2) you may not participate in, and may be disqualified from, the Contest if that problem is used in any later rounds.
- 1.4 Requirements to Enter and Receive a Prize.
- In order to enter the Contest, you must have
- access to the Internet, and
- a valid email address.
- In order to receive a prize, you must provide your name, phone number, a valid postal address, and any other information Google may need to award or send you a prize.
- (C) You are not registered for the Contest unless you receive a registration confirmation email from Google. If you think you registered for the Contest but did not receive a confirmation email, please email firstname.lastname@example.org.
- (D) If you are a government official, you may only enter the Contest in your personal capacity and may be ineligible to receive certain prizes. "Government officials" include any government employee; candidate for public office; and employee of government-owned or government-controlled companies, public international organizations, and political parties.
- 1.5 Verifying Eligibility. Google reserves the right to verify your eligibility and to adjudicate on any dispute at any time. You agree to provide Google with any proof of eligibility requested by Google and your refusal or failure to provide such proof within 10 days of Google's request will result in your disqualification from the Contest and forfeiture of any prizes.
- 1.6 Communications. All communications between Google and you, including the Contest website and email communications, will be in English.
- 2. How to Enter.
- 2.1 Registration. To enter the Contest, you must register at the Contest website and provide the required information about yourself.
- (A) Registration times are listed on the Contest website. YOU ARE RESPONSIBLE FOR DETERMINING THE CORRESPONDING TIME IN YOUR TIME ZONE.
- (B) You must register for each Contest before you can participate in that Contest. For example, if you registered for Code Jam and wanted to participate in Google Code Jam to I/O for Women, you would still need to register for the Google Code Jam to I/O for Women Contest.
- (C) You may only register for the Contest with one valid email address. If you compete in the same Contest with multiple email addresses, you will be disqualified.
- 2.2 Screen Names. Google reserves the right to change or omit contestant screen names or nicknames for purposes of publication on Google websites or listserv, particularly if they are, in Google's sole opinion, obscene or violate the intellectual property rights of others.
- 3. Contest Structure.
- 3.1 Overview. Each Code Jam Contest consists of one or more rounds as may be more fully described in rules posted on the Contest website. Each round consists of one or more problems. In each round, you will receive a score based on the answers you provide to the problem(s). If the Contest has more than one round and your score exceeds a specified threshold or is one of a specified number of highest scores in that round, you will advance to the next round.
- 3.2 Problems. In each round you will be asked to solve one or more algorithmic problems, which may include one or more small inputs, large inputs, or other inputs described in the problem statement. A problem may describe special rules for inputs other than small or large. You will be able to access the problems on the Contest website and download the relevant input files once the round begins.
- 3.3 Submissions. You must submit your solutions for problems through the Contest website.
- (A) Your submission must be in the format specified by the problem, the Contest website, and these Terms (with precedence given in that order). Deliberately obfuscated source code is not allowed.
- (B) You should submit your solutions within enough time remaining in each time period to avoid latency issues between your computer and Google servers. Solutions submitted after the applicable time period expires will not be accepted.
- 3.4 Modifying the Contest. Google may cancel or modify the structure and location of the Contest if technical difficulties prevent or make it unfair to run the Contest in accordance with these Terms.
- 4. Judging and Scoring. The solutions you submit will be judged as follows.
- 4.1 Points. Each problem is worth a certain value of points. For example, for a problem with a small input and a large input, the solution to the small input may be worth 10 points, while the solution to the large input may be worth 15 points. Your total score for a round will be the sum of the points you earned in that round for each correct solution to an input.
- 4.2 Ranking Contestants.
- (A) Highest Score First. Contestants will be ranked in order of the highest score first and lowest score last.
- (B) Ties Ranked by Penalty Time. In the event of a tie between contestants, the one with the lowest penalty time will be ranked first while the one with the highest penalty time will be ranked last. Penalty times may be specified in the Contest Rules, the Contest website, or in the problem statement.
- 5. Advancement and Notice of Winners.
- 5.1 Notice of Advancement. Results posted on the Contest website are not definitive and may change, for example, due to disqualifications or judging of discrepancies in answers. If you qualify for advancement, you will be notified by email at least one day before the following round whether you have advanced to the next round. This email notice is the only official notice of advancement.
- 5.2 Announcement of Winners. The results of the final round of the Contest will be posted on the Contest website after its completion. Posted results will include a list of the contestants' names or nicknames in ranked order based on their scores.
- 6. Prizes.
- 6.1 Money Prizes. Money prizes will be awarded in U.S. dollars and may be delivered in the form of cash, check, gift card, or other cash equivalent. You are responsible for any costs associated with currency exchange.
- 6.2 Delivery. Google may either ship your prize to you or request that you come to a Google office or a designated location to collect your prize. If Google informed you that it will ship your prize to you and you have not received your prize within 6 months after the end of the Contest, please email email@example.com. Google will not award any prizes beyond 12 months from the end of the Contest.
- 6.3 Forfeiture. You will forfeit your prize and an alternative winner may be selected, if:
- (A) You fail to provide a phone number during registration or any other information requested by Google within 10 days of Google's request;
- (B) You fail to respond to Google's email notification of your prize within 10 days;
- (C) You fail to follow directions provided by Google for receiving the prize;
- (D) Your prize or prize notification is returned to Google; or
- (E) You fail to pay applicable taxes or timely submit applicable documentation to Google or the relevant tax authority.
- 6.4 Substitute Prizes. Google may provide a substitute prize of equal or greater value at Google's discretion, or where required by law, or in the event all or part of a prize becomes unavailable.
- 6.5 Taxes. You are solely responsible for complying with all applicable tax laws and filing requirements. To remain eligible for a prize, you must submit to Google or the relevant tax authority all documentation requested by Google or required by applicable law within 7 days of Google's request or earlier if required by law. You are solely responsible for paying all taxes, duties, and other fees imposed on prizes awarded to you. All prizes will be net of any taxes Google is required by law to withhold.
- 6.6 No Warranties for Prizes. Except as required by law, Google makes no warranties, express or implied, for prizes.
- 7. Disqualification.
- 7.1 You may be disqualified from the Contest and forfeit any prizes you may be eligible to receive if Google reasonably believes that you have attempted to undermine the legitimate operation of the Contest, including:
- (A) Providing false information about yourself during registration or concerning your eligibility;
- (B) Breaching or refusing to comply with these Terms;
- (C) Tampering or interfering with administration of the Contest (including monitoring at onsite rounds) or with the ability of other contestants to participate in the Contest;
- (D) Sharing or using from others any information about a problem (including its content or solution) before the end of a round unless expressly permitted by the Contest Rules or these Terms;
- (E) Submitting content that:
- (1) violates the rights of a third party,
- (2) is lewd, obscene, pornographic, racist, sexist, or otherwise inappropriate to the Contest, or
- (3) violates any applicable law; or
- (F) Threatening or harassing other contestants or Google, including its employees and representatives. Harassing behavior includes, offensive, threatening, and/or hateful comments directed toward an individual or protected class (gender, sexual orientation, disability, gender identity, age, race, religion, ethnicity, veteran status), the use or display of sexual images in public spaces, deliberate intimidation, stalking, following, taking unwelcome photos/videos, sustained disruption of talks or other events, inappropriate physical contact, unwelcome sexual attention, and developing and/or promoting any applications designed to encourage any of these behaviors.
- 7.2 You may report to Google at firstname.lastname@example.org any harassment, cheating, or violation of these Terms by another contestant. Google may investigate any such allegations and all decisions by Google in these matters are final and binding. If you are asked to stop any harassing behavior, you are expected to comply immediately.
- 8. Ownership; Rights in Your Submissions; Privacy.
- 8.1 License to Use Content; Reservation of Rights. You may use the code and content made available on the Contest website solely to prepare for and compete in the Contest. Google retains all rights in such code and content not explicitly granted by these Terms.
- 8.2 Ownership of Submissions. You retain all rights to your submissions of output files and source code that you had before submitting them to the Contest.
- 8.3 License to Submissions. For any submission you make to the Contest, you grant Google a non-exclusive, worldwide, perpetual, irrevocable, free license (with the right to sublicense) to reproduce, prepare derivative works of, distribute, publicly perform, publicly display, and otherwise use such submission for the purpose of administering and promoting the Contest. Your submitted source code may be made available for anyone to view on the Internet and download and use at the end of the Contest.
- 8.4 Privacy.
- (A) How Google May Use Your Information.
- (2) By accepting a prize, you agree that Google and its agents may use your name, likeness, and statements without compensation to promote the Contest, including displaying it on the Contest website.
- (B) Sharing Your Information. Your name and username you create during registration may be displayed publicly on the Contest website. If you win a prize, Google may share your name and address with third parties to fulfill awarding a prize to you.
- (C) Accessing Your Information. You may access, review, and update any of your personal data held by Google in connection with the Contest by emailing email@example.com or writing to Google (Attention: Code Jam) at the address listed above.
- (D) Permission to Record You. If you participate in an onsite round of the Contest, you give permission to Google to make and have made audio, visual, and audiovisual recordings (in any format or media) of you and your activity on a computer while you are participating in the Contest (the "Recordings") and grant Google an unrestricted, sublicensable, transferable, perpetual, irrevocable, worldwide, free license to use the Recordings to promote the Contest, including broadcasting it live. You waive all rights, including any right of prior approval, and release Google and its agents from, and will neither sue nor bring any proceeding against Google or its agents for, any claim or cause of action, whether now known or unknown, for defamation, copyright infringement, and invasion of the rights to privacy, publicity, or personality or any similar matter, or based upon or relating to the use and exploitation of the Recordings.
- 9. Your Representations, Warranties, Indemnities.
- 9.1 Representations and Warranties. You represent and warrant that:
- (A) the information you provide about yourself while registering or in subsequent communications with Google is truthful and accurate;
- (B) your submissions to the Contest are original and, unless expressly permitted by these Terms, not created with the assistance of any information about the problems not provided by Google;
- (C) you own all rights in your submissions or otherwise have the right to submit your submissions to Google and grant to Google the licenses granted in these Terms without violating any rights of any other person or entity or any obligation you may have with them; and
- (D) your submissions do not violate any applicable laws.
- 9.2 Indemnities. You will indemnify Google and its affiliates, directors, officers, employees against all liabilities, damages, losses, costs, fees (including legal fees), and expenses relating to any allegation or third-party legal proceeding to the extent arising from:
- (A) your acts or omissions in relation to the Contest (including your use or acceptance of any prize and your breach of these Terms); and
- (B) your submissions violating any rights of any other person or entity or any obligation you may have with them.
- 10. Disclaimers.
THE CONTEST WEBSITE AND ALL CONTENT (INCLUDING SOURCE CODE) IS PROVIDED ON AN "AS IS" AND "AS AVAILABLE" BASIS. GOOGLE DISCLAIMS ALL REPRESENTATIONS AND WARRANTIES (EXPRESS OR IMPLIED), INCLUDING ANY WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. GOOGLE IS NOT RESPONSIBLE FOR ANY INCOMPLETE, FAILED, OR DELAYED TRANSMISSION OF YOUR APPLICATION INFORMATION OR SUBMISSIONS DUE TO THE INTERNET, INCLUDING INTERRUPTION OR DELAYS CAUSED BY EQUIPMENT OR SOFTWARE MALFUNCTION OR OTHER TECHNICAL PROBLEMS. YOU USE ALL SOURCE CODE AVAILABLE ON THE CONTEST WEBSITE AT YOUR OWN RISK.
- 11. General.
- 11.1 Not an Offer or Contract Of Employment.
- (A) You acknowledge that your participation is voluntary.
- (B) You acknowledge that no confidential, fiduciary, agency or other relationship or implied-in-fact contract now exists between you and Google and that no such relationship is established by your submission of an entry to the Contest.
- (C) You understand and agree that nothing in these Terms, any Rules, a submission into the Contest, or an award of a prize may be construed as an offer or contract of employment with Google.
- 11.2 Severability. If any term (or part of a term) of these Terms is invalid, illegal or unenforceable, the rest of the rules will remain in effect.
- 11.3 Translations. In the event of any discrepancy between the English version of these Terms and a translated version, the English version will govern.
- 11.4 Governing Law. ALL CLAIMS ARISING OUT OF OR RELATING TO THESE TERMS WILL BE GOVERNED BY CALIFORNIA LAW, EXCLUDING CALIFORNIA'S CONFLICT OF LAWS RULES, AND WILL BE LITIGATED EXCLUSIVELY IN THE FEDERAL OR STATE COURTS OF SANTA CLARA COUNTY, CALIFORNIA, USA; THE PARTIES CONSENT TO PERSONAL JURISDICTION IN THOSE COURTS.
Contest Rules for Code Jam 2016
Welcome to Google Code Jam 2016!
- 1. Age. You may participate in the Contest only if you are 13 years of age or older at the time of registration, but you must be 18 years of age or older at the time of registration to be eligible for the onsite final round; if not, you are only eligible to win a t-shirt.
- 2. Registration. Registration for the Contest opens on Tuesday, March 8, 2016 at 19:00 UTC and ends on Sunday, April 10, 2016 at 2:00 UTC.
- 3. Contest Structure. The Contest consists of two competition tracks: Code Jam and Distributed Code Jam. Code Jam has 5 rounds: a qualification round, Round 1, Round 2, Round 3, and a final round. You must qualify for Round 2 of Code Jam to qualify for Distributed Code Jam. Distributed Code Jam has 3 rounds: Round 1, Round 2, and a final round. The qualification round, Round 1, Round 2, and Round 3 of each track will be conducted online. The final round of each track will take place at the Google office in New York, New York, USA, or such other location as Google may designate.
- 3.1 Code Jam Structure.
- (A) Qualification Round. Code Jam will start with a qualification round on Friday, April 8, 2016 at 23:00 UTC and run for 27 hours, ending on Sunday, April 10, 2016 at 2:00 UTC. In the Qualification Round, you must log in to the Contest website to attempt to solve a number of problems within the 27-hour period. If you earn a minimum number of points during the qualification round, which will be displayed on the Contest website, you will advance to Round 1 of Code Jam.
- (B) Round 1. Code Jam Round 1 is conducted online and is offered in three sub-rounds at the times specified athttps://code.google.com/codejam/schedule.html from Saturday, April 16, 2016 to Sunday, May 8, 2016. If you advanced to Code Jam Round 1, you can participate in any or all of the sub-rounds by logging into the Contest website to solve a number of problems to attempt to qualify for Code Jam Round 2. However, once you qualify for Code Jam Round 2, you may not participate in any later sub-rounds of Code Jam Round 1. You will advance to Code Jam Round 2 if you are one of the top-scoring 1000 contestants from one of the sub-rounds in Code Jam Round 1. You will be notified by email after the end of each sub-round if you are one of the 3000 contestants advancing to Code Jam Round 2.
- (C) Round 2. Code Jam Round 2 is conducted online and will begin on Saturday, May 28, 2016 at 14:00 UTC and will end on Saturday, May 28, 2016 at 16:30 UTC. To participate in Code Jam Round 2, you must log in to the Contest website to solve problem sets. You will advance to Code Jam Round 3 if you are one of the top-scoring 500 contestants from Code Jam Round 2. You will be notified by email after the end of Code Jam Round 2 if you are one of the 500 contestants advancing to Code Jam Round 3.
- (D) Round 3. Code Jam Round 3 is conducted online and will begin on Saturday, June 11, 2016 14:00 UTC and will end on Saturday, June 11, 2016 at 16:30 UTC. To participate in Code Jam Round 3, you must log in to the Contest website to solve problem sets. You will advance to the onsite final round of Code Jam if you are one of the top-scoring 25 contestants from Code Jam Round 3. You will be notified by email after the end of Code Jam Round 3 if you are one of the 25 contestants advancing to the final round of Code Jam.
- (E) Final Round.
- (1) Time and Location. The final round of Code Jam will be held on Friday, August 5, 2016 at the Google offices in New York, New York, USA. Google may change the date and location of the final round in its discretion.
- (2) Structure. During the final round of Code Jam, you will be asked to solve problem sets using only Google-provided computer equipment. You may choose to use your own keyboard and other materials permitted by Google. Google will send you a list of permitted materials by email at least 7 days before the beginning of the final round.
- (3) Last Year's Winner. If you are the winner of Google Code Jam 2015 and register for Google Code Jam 2016 and are otherwise eligible to participate, you will automatically advance to the final round of Code Jam regardless of your participation or placement in any round.
- 3.2 Distributed Code Jam Structure. If you advance to Round 2 of Code Jam, then you qualify to compete in the first round of Distributed Code Jam. Except for a violation of these Terms, your advancement in Distributed Code Jam is independent of your advancement in Code Jam.
- (A) Round 1. Distributed Code Jam Round 1 is conducted online and will begin on Sunday, May 29, 2016 14:00 UTC and will end on Sunday, May 29, 2016 at 17:00 UTC. To participate in Distributed Code Jam Round 1, you must log in to the Contest website to solve problem sets. You will advance to Round 2 of Distributed Code Jam if you are one of the top-scoring 500 contestants from Distributed Code Jam Round 1. You will be notified by email after the end of Distributed Code Jam Round 1 if you are one of the 500 contestants advancing to Distributed Code Jam Round 2.
- (B) Round 2. Distributed Code Jam Round 2 is conducted online and will begin on Sunday, June 12, 2016 14:00 UTC and will end on Sunday, June 12, 2016 at 17:00 UTC. To participate in Distributed Code Jam Round 2, you must log in to the Contest website to solve problem sets. You will advance to the onsite final round for Distributed Code Jam if you are one of the top-scoring 15 contestants from Distributed Code Jam Round 2. You will be notified by email after the end of Distributed Code Jam Round 2 if you are one of the 15 contestants advancing to the final round of Distributed Code Jam.
- (C) Final Round.
- (1) Time and Location. The final round of Distributed Code Jam will be held on Saturday, August 6, 2016 at the Google offices in New York, New York, USA. Google may change the date and location of the final round in its discretion.
- (2) Structure. During the final round of Distributed Code Jam, you will be asked to solve problem sets using only Google-provided computer equipment. You may choose to use your own keyboard and other materials permitted by Google. Google will send you a list of permitted materials by email at least 7 days before the beginning of the final round.
- 4. Problems.
- 4.1 Editor; Programming Language; and Compiler.
- (A) Editors. You may use any editor or development environment, including those made available online as long as your code is not accessible to others.
- (B) Programming Language and Compiler. For the qualification round of Code Jam, you may use any programming language to solve a Code Jam problem. However, for any round after the qualification round, the compiler or interpreter you use must be available such that anyone else can use it for free without a time limitation and without violating any rights of any person or entity, except that the following are permissible:
- (1) Visual Studio, Microsoft Excel, and MATLAB;
- (2) compilers and interpreters that require Microsoft Windows or Mac OS X, as long as the compiler or interpreter itself is free, as described in this Subsection (B); and
- (3) any further exceptions that Google may communicate to you by email or on the Contest website.
- 4.2 Submitting Solutions for Code Jam Problems. For Code Jam problems, you must submit through the Contest website a correct output file and the source code used in its generation or a written explanation explaining how you solved the problem.
- (A) Submission Requirements. You must submit source code as one or more plaintext or zipped plain text files. The size of each source code file may not exceed 100KB, and the total size of your source code for an output after being unzipped may not exceed 1MB. If you use a standard library that is freely available on the Internet that is too large to include in your submission, you may exclude it as long as you put a comment in your source code explaining where the library is available.
- (B) Time Limit. When you attempt to solve a particular input for a Code Jam problem, a timer will start as soon as you begin downloading the file. You must submit your solution in accordance with Subsection (A) above within:
- (1) 4 minutes for a small input;
- (2) 8 minutes for a large input; or
- (3) some other time as specified in the problem for other inputs, but in each case no later than the end of the round of the Contest.
- (C) Small Inputs. In Code Jam, Google will judge your submissions for small inputs immediately and notify you if your submission is correct or incorrect. If the output file and source code file are not received by the end of the 4 minute period or if the output you submit is judged incorrect, you may choose to attempt to solve that problem again within the time remaining in the round, but will have to download a new small input.
- (D) Large Inputs. In Code Jam, you can only attempt to solve each large input once. For each large input, you can make multiple output submissions within the 8 minute period, but only your last submission will be judged. Google will notify you whether your submission was correct or incorrect after the round ends by posting the results on the Contest website.
- (E) Submission Errors and Discrepancies.
- (1) During a Round. Google may ignore certain incorrect submissions in Code Jam and notify you that the submission was malformed and that you may submit again in whatever time remains in the period. During a round of Code Jam, if you think you submitted the wrong source code for an output, you may notify the judges using the "Ask a Question" link on the Contest website. For inputs other than large inputs, the judges may mark the submission as incorrect so that you can attempt the problem again. For a large input for onsite rounds of Code Jam, the judges may, in their discretion, permit resubmission of the source code.
- (2) After a Round. You may not submit source code for any round after it ends. After the end of a round, if a discrepancy is discovered between the output file you submitted that was judged correct and the corresponding source code that you submitted, then a panel of two or more judges consisting of employees of Google will examine the source code for your submissions. The judges will determine whether a discrepancy exists, and if so will decide in their sole opinion whether the discrepancy is trivial or non-trivial. For a trivial discrepancy, you will be assessed a 4-minute penalty for that input. For a non-trivial discrepancy, you will be assessed a 4-minute penalty in a qualification round and you will forfeit all points for that input in all other rounds.
- 4.3 Submitting Solutions for Distributed Code Jam Problems. For Distributed Code Jam Problems, you must submit through the Contest website the source code for your solution and it will be compiled and run on Google Compute Engine. The Contest website will return a response code indicating whether your solution was accepted or not. The Contest website will provide a list of response codes and their meaning.
- (A) Submission Requirements. Your solution for a problem in Distributed Code Jam must be a single file of source code written in one of the approved languages listed on the Contest website which may list additional requirements for a particular language. Your solution:
- (1) cannot exceed 100KB in size;
- (2) must compile to 4MB or less in size;
- (3) must compile in less than 10 seconds under 64-bit Linux;
- (4) cannot fork or create threads;
- (5) cannot replace the currently executed binary with a different one (e.g. you cannot use exec);
- (6) can only use the libraries published on the Contest website;
- (7) cannot embed assembler code;
- (8) cannot use network functions (you must use the library published on the Contest website to communicate with other instances);
- (9) cannot open files (including temporary files);
- (10) cannot violate system security;
- (11) cannot wait for user interaction;
- (12) cannot use more memory than specified in the problem statement; and
- (13) must make all instances exit with a 0 exit code.
- (B) Time Limit. You must submit your solutions for problems in Distributed Code Jam within the round and your solutions must compile and run within the time specified in the problem, the Contest website, and these Terms (with precedence given in that order).
- (C) Small Inputs. In Distributed Code Jam, you must provide a correct solution for the problem's small input before you can solve the large input. If your solution was not accepted, you may continue to submit new solutions for the small input until it is accepted or until the round expires.
- (D) Large Inputs. Within a round of Distributed Code Jam, you can submit more than one solution for a large input, but only your last submission will be judged. Google will notify you whether your submission for the large input was correct or incorrect after the round ends by posting the results on the Contest website.
- (E) Test Runs. You may submit test runs in Distributed Code Jam. The Contest website will provide more information on how to submit a test run and how often you may submit them.
- 4.4 Penalty Time. Your penalty time for a round in Code Jam or Distributed Code Jam is equal to the time it took you to submit your last correct solution measured from the start of the round, plus 4 minutes for each incorrect solution you submitted for small inputs you eventually solved. Penalty times may also be specified in a problem statement.
- 5. Attendance at the Final Round and Related Events.
- 5.1 Required Attendance. You should arrive in New York City at least one day in advance of the final round to avoid being late and possibly disqualified. To remain eligible to participate in the final rounds of the Contest and to receive a prize, you must commit to attending all related organized events as well as the awards ceremony at the end of the Contest. If you fail to attend the awards ceremony or any other event related to the final round that is not optional, Google may, in its discretion, move you to the bottom of the rankings for the final round and award your prize to the contestant with the next highest score until the top three prizes have been awarded. All events related to the final round are open only to contestants, except that you may bring a guest to the reception.
- 5.2 Travel Expenses. As a finalist, Google will pay for certain expenses related to your travel to and participation in the final round as described below. You must submit to Google or its designated agent within 45 days after the final round any eligible expenses you want reimbursed with detailed receipts and any documentation requested by Google; otherwise, your expenses will not be reimbursed. You are responsible for all other expenses.
- (A) Visa. You are responsible for obtaining your own visa prior to arrival to the final round; however, Google will reimburse you for any visa application fee and up to $100 USD in travel expenses incurred each way in obtaining the visa. Google will not reimburse any fees or expenses related to obtaining a passport.
- (B) Flight. As a finalist, you will receive round-trip coach class air transportation from the major airport nearest your residence on a flight selected by Google. If you want to fly from an airport other than the major airport nearest your residence or on a flight other than the flight selected by Google, you will have to pay for the difference in cost. If Google changes the location of the final round, you are not entitled to any difference in the cost of airfare paid by Google. Google will reimburse you for the cost to travel to and from each airport up to $50 USD each way.
- (C) Accommodations. As a finalist, you will receive hotel accommodations for one at a hotel of Google's choice for the duration of the final round.
- (D) Meals. As a finalist, Google will reimburse you for the cost of your meals up to $30 USD per day on days you are travelling to and from the Contest and up to $60 USD per day on non-travel days during the final round.
- 5.3 TRAVEL DISCLAIMER. YOU UNDERSTAND AND AGREE THAT TRAVEL CONTAINS SOME INHERENT ELEMENT OF RISK OF ACCIDENT, ILLNESS, INJURY, LOSS OR DEATH. IN NO EVENT WILL GOOGLE, ITS AFFILIATES, OR AGENTS, BE LIABLE FOR ANY HARM, DAMAGE, CLAIM, LOSS OR OTHER ACTION ARISING OUT OF YOUR TRAVEL TO OR FROM THE FINAL ROUND.
- 6. Prizes.
- 6.1 Code Jam T-Shirt. You are eligible to receive one t-shirt if:
- (A) you are one of the top-scoring 1000 contestants from Code Jam Round 2; or
- (B) you are the winner of Code Jam 2015 and eligible to participate in the final round pursuant to Section 3.1(E)(3) (Last Year's Winner); or
- (C) you are one of the top-scoring 500 contestants from Distributed Code Jam Round 1.
- 6.2 Code Jam Cash Prizes. You are eligible to receive one of the following cash prizes if you advance to, attend, and compete in the final round of Code Jam.
- 6.3 Distributed Code Jam Cash Prizes. You are eligible to receive one of the following cash prizes if you advance to, attend, and compete in the final round of Distributed Code Jam.
- 7. Disqualification.
- 7.1 Qualification Round. You will not be disqualified in the qualification round of Code Jam for using or sharing information about problems.
- 7.2 Final Round. If you are disqualified from the final round of the Contest, Google may advance the next highest scoring contestant from the previous round. You may be disqualified from a final round if:
- (A) You fail to respond to any request for information from Google related to the final round within 5 days of Google's request;
- (B) You fail to confirm receipt of your visa letter from Google within 5 days of its receipt;
- (C) You fail to book your flight with Google's travel agent within 2 weeks of receiving the email invitation to participate in the final round;
- (D) You fail to respond to flight confirmation emails within 48 hours of Google or its agent sending such email;
- (E) You fail to provide all documentation and information related to your visa and passport requested by Google within 2 weeks of the final round; or
- (F) You fail to compete in the final round, or are unable to do so (for example, because you failed to obtain a passport in time).