Are you a mastermind who's bored of winning our monthly algorithm contests? Do you want to get some experience on the other side of the equation? CodeChef is on the lookout for advanced programmers to create and/or test problems and/or write good editorials in simple English for our contests. If you're interested in contributing, read the guidelines below and apply to become an official CodeChef Problem Setter or Tester or Editorialist.
Note: If you are applying for becoming a new problem setter in CodeChef, and we don't know you personally and there isn't a problem setter of CodeChef who can vouch for your skills, then you must satisfy at least one of the below criteria for getting your problem setter application considered.
- 4* or more in CodeChef
- Div 1 in CodeForces or Topcoder.
Contest Types & Schedule
There are three types of contests that we host:
- The Long Challenge
- The Cook-Off
- The LunchTime
The details of each of these contests and the schedule for application is mentioned below:
|Duration||10 days||2.5 hrs||3 hrs|
|Schedule||First Friday of every month||Second last Sunday of every month||Last Saturday of every month|
|Start Time||1500 hrs IST||2130 hrs IST||1930 hrs IST|
|Submit Problem idea(s)||40 days before the start of the contest||30 days before the start of the contest||30 days before the start of the contest|
|Apply to Test||40 days before the start of the contest||30 days before the start of the contest||30 days before the start of the contest|
|Apply to write Editorials||40 days before the start of the contest||30 days before the start of the contest||30 days before the start of the contest|
|Syllabus||Intended to make users learn new concepts in 10 days of the contest, progressing to solve algorithmic problems of increasing difficulty.||ICPC styled. Consist of algorithmic problems of gradually increasing difficulty levels.||Intended towards the school students. The syllabus is strictly restricted to IOI.|
Problems difficulty levels are key to setting problems and must be understood very well by both the problem author and the tester. Following guidelines are used in our monthly contests to arrive at the difficulty levels. Note that these are including both Division 1 and Division 2.
|Types of problems used||10 Partially graded + 1 Challenge (Tiebreaker)||7 Binary problems (ACM Styled)||7 Partially graded (IOI styled)|
|Hard (L7) Or Super-Hard (L8)||2||0||0|
|Medium-Hard (L6)||0||1 (Or Hard)||1|
|Medium (L5)||2 (Or 1 Medium and 1 Medium-hard)||1||1|
1. Cakewalk (L1)
Should be very straight forward. This type of problems are primarily put up to encourage new comers by providing them some gratification of solving a problem during a contest. These problems should be solvable by anyone who knows a programming language and basic data structures like arrays and lists. No further knowledge should be needed.
For a subtask type problem, it may have different subtasks in an increasing level of difficulty but none exceeding the Cakewalk level.
- Long: The solve rate should be close to 100%. Yes, we should try and make it such that everyone should be able to solve. And there is no exception to this.
- Cook-Off: 100%
- Lunchtime: 100%
2. Simple (L2)
Not as straight forward as CAKEWALK. This type should be solvable by everyone who knows basic data-structures and programming. It may or may not require some standard algorithm but whatever is required should be immediately obvious from the problem statement, similar solution idea should be easily available in any textbook, easily searchable, and more importantly should be very easily implementable. This should not involve advanced concepts like dynamic programming. And it should not be a tight bound optimization problem. Almost zero genius is required to solve this.
For a subtask type problem, it may have different subtasks in an increasing level of difficulty but none exceeding the Simple level.
- Long: The solve rate should be close to 90%.
- Cook-Off: 80%
- Lunchtime: 70%
3. Easy (L3)
More difficult than SIMPLE. This type may require slightly advanced concepts of data structures and algorithms, like DP, Graphs Traversal, Simple Trees or Mathematics etc. However, it may not need the knowledge of advanced data structures. Should be fairly easy for most of the contestants to solve this type of problems without too many optimizations.
For a subtask type, it may have different subtasks in an increasing level of difficulty but none exceeding the Easy level. The easiest subtasks should be Simple or Cakewalk.
- Long: The solve rate should be close to 70%.
- Cook-Off: 60%
- Lunchtime: 50%
4. Easy-Medium (L4)
Needless to say, more difficult than EASY. Should be solvable by the good programmers. May involve advanced programming concepts and may be complicated to code. Programmers more experienced at competitive programming should be able to solve it fairly quickly, while the new programmers may need to work hard to arrive at the solution.
For a subtask type, it may have different subtasks in an increasing level of difficulty but none exceeding the Easy-Medium level. The easiest subtask should be Simple or higher.
- Long: The solve rate should be close to 50%
- Cook-Off: 30%
- Lunchtime: 20%
5. Medium (L5)
This should require more work for anyone to solve. Knowledge of advanced programming concepts like advanced DP, advanced Graph algorithms, advanced Trees, Computational Geometry, advanced Mathematics etc, or a combination of more than one of these may be needed to arrive at the right solution. However, it should not involve looking into research papers for the problems to be solved. A novice programmer should not be able to solve this, without putting in a lot of effort to learn those concepts and implement them.
For a subtask type, it may have different subtasks in an increasing level of difficulty but none exceeding the Medium level. The easiest subtask should be Simple or higher.
- Long: The solve rate should be around than 20%
- Cook-Off: 10%
- Lunchtime: 5%
6. Medium-Hard (L6)
It is fine if no one is able to solve these during a contest, however, the problems should be solvable. This should challenge even the best programmer out there. It may involve a combination of multiple advanced topics to get solved. Ideally, only one or two people should be able to solve this problem in the given time. But again this should have a problem which requires going through a research paper. Even the top programmers should sweat it out to solve it in the given time.
For a subtask type, it may have different subtasks in an increasing level of difficulty but none exceeding the Medium-Hard level. The easiest subtask should be Easy or higher.
- Long: The solve rate should not be more than 5%
- Cook-Off: The solve rate should not be more than 1%
- Lunchtime: The solve rate should not be more than 1%
7. Hard (L7)
This is the hardest of all. It should be able to challenge the best programmers out there for a 10-day contest. The idea to solve should be hard to come up with even with the knowledge of most advanced algorithms. Often, problem setters have made use of problems in research to get ideas regarding such problems.
For a subtask type, it may have different subtasks in an increasing level of difficulty but none exceeding the Hard level. The easiest subtask should be Easy or higher.
- Long: The solve rate should not be more than 1%.
- Cook-Off: NA
- Lunchtime: NA
8. Super-Hard (L8)
This is an unsolvable (well, almost) problem. Problems like these occur rarely and only a handful of people all across the globe should be able to solve this.
For a subtask type, it may have different subtasks in an increasing level of difficulty but none exceeding the super Hard level. The easiest subtask should be Easy or higher.
- Long: Only a few people should be able to solve this problem.
- Cook-Off: NA
- Lunchtime: NA
9. Challenge (Tiebreaker)
Tiebreaker problems are typically optimization problems (maximize or minimize). The best submission gets a score of 1 while the rest get scores relative to the points of the best submission. The difficulty of getting an accepted solution on the challenge problem should not exceed "Medium". Ideally, it should lie between "easy" to "medium". It can either be an interactive challenge problem or a noninteractive (classical tie-breaker) problem.
- Long: The solve rate should be around than 30% to 60%
- Cook-Off: NA
- Lunchtime: NA
PS: Please note that mentioned solve rates are only indicators. While we understand that it is not always possible to classify the exact level, but based on our previous experience we should be able to come up with a closer approximation. We want the Simple, Cakewalk and Easy problems to err on the Easier side and not on the Harder one.
Following is the testing process:
|Setter(s) to send the problem ideas by.||T - 40||T - 30||T - 30|
|Problem idea acceptance, problem selection & first-hand review by admin.||T - 40||T - 30||T - 30|
|Problem Author creates the problem with test data & statement and sends it to admin.||T - 30||T - 20||T - 20|
|Problems are selected.
Then it is forwarded to the Tester and Editorialist for verification of difficulty levels and problem statements and an independent crack at the problems.
|Problems sent to Tester & Editorialist for first hand review||T - 30||T - 20||T - 20|
|Tester to send their initial feedback about the problems||T - 20||T - 15||T - 15|
|Introduction of Setter/Tester & Editorialist.||T - 20||T - 15||T - 15|
|Testing for the contest starts|
|Setters implement the feedback||T - 17||T - 12||T - 12|
|Editorialist to share the first draft of editorials.||T - 15||T - 9||T - 9|
|Editorialist to receive feedback from the setters on the editorials||T - 12||T - 8||T - 8|
|Editorialist implements the feedback of the setters||T - 10||T - 7||T - 7|
|Test data/ Time limits etc are to be fixed. Bugs are resolved. The Tester and Setter(s) interact for the finalizing the problem).||T - 7||T - 5||T - 5|
|The setter(s) and tester to submit their commented solutions||T - 7||T - 5||T - 5|
|Tester and the panel to submit final feedback about the Editorials||T - 7||T - 5||T - 5|
|Final version of the Editorials to be submitted||T - 5||T - 3||T - 3|
|All the problems are ready for the contest||T - 5||T - 3||T - 3|
|Problems Statements are ready to be translated. Test data is ready.|
|Translation for all the problems are to be submitted||T - 3||T - 2||T - 2|
|Problems and Editorials are ready|
- As of now, we have Russian, French, Mandarin and Vietnamese translations for our contests. The translators will be added in the testing group. They have to submit their final translations (in PDF format and DOC format) for all the problems that they translate.
- The translators have to make sure that any correction if pointed out during the contest, should be fixed immediately.
- We pay our translators USD 7 per problem.
- The statement verifier will have to modify the problem statement so that it is clear and concise. There should be no grammatical errors, and usage of jargons should be kept to a minimum. Definitions or hyperlinks should be added wherever needed. These might involve rewritting most of the statement sometimes.
- The statement verifier should also ensure that the sample input/outputs are apt.
- We pay our statement verifiers USD 7 per problem.
- If a Problem Tester finds any faults with a problem, the Problem Setter will have time to correct it until a consensus between the Tester and the Setter is achieved (subject to admin approval).
- If the problem is found to be faulty after the contest starts, both the Problem Tester and the Problem Setter will have to forfeit the entire compensation amount paid for the problem. The final decision regarding this will be taken by the Contest Admin.
Payments will be normally done after the end of a contest. You should receive the compensation within 40 working days for transfers within India. It might take upto 60 working days for international transfers.
For payments within India:
- We transfer the amount to your bank account. A Tax Deduction at Source of 10% is done for every payment as per the Income Tax Guidelines (section 194 B for cash prize winners). We issue a TDS certificate for the same at the end of the Financial year in which the payments are made, if you would like to claim this in your tax returns. Send an email to email@example.com to request this certificate.
For payments outside India:
- We transfer the amount via Wire.
- For Wire Transfers, each transaction incurs an additional cost of 25 USD. This cost we bear at our end. However, to keep this affordable, for any wire transfer payments we will make payment only once in every 2 months subject to a minimum payment of 200 USD. However, if the person wants to bear this cost, we can make the payment immediately.
- A Tax Deduction at Source @ 10 - 20% (depending on the treaty between your country and India) is done for every payment as per the Indian Income Tax Guidelines. We will issue a TDS certificate for the same at the end of the Financial year in which the payments are made. Send an email to firstname.lastname@example.org to request this certificate.
Note: We are unfortunately unable to have financial transactions with users who are residents of the following countries and territories due to legal restrictions: Albania, The Bahamas, Barbados, Botswana, Cambodia, Crimea, Cuba, Ghana, Iceland, Iran, Jamaica, Mauritius, Mongolia, Myanmar, Nicaragua, North Korea, Pakistan, Panama, Sudan, Syria, Uganda, Yemen, Zimbabwe. So please do not apply or propose any problems.