Some would say that razor-sharp analytical skills and creativity do not go hand-in-hand, but we disagree. We know there are plenty of programmers out there who can come up with fun problems for our contests. We need problems for our Long Contests, Cook-Offs and our Lunchtimes. Read on for specifications and submission rules.
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.
Process
- Initially, you just need to send the problem ideas. You can submit yours here.
- We recommend sending only the basic problem idea or a short statement at first, along with the solution outline and constraints.
- The admin will then review this, and have a discussion with you about the problem, during which the problem might be modified by mutual agreement.
- Once the admin has approved the idea, you need to create the full problem statement and test data. If you do not have problem uploading access, you need to apply here to get the same.
- You can contribute to a part of the problem set for Cook-Off and LunchTime. You can mention this in the additional comments section in the above form.
- At any point, after the problem idea is accepted, the admin retains the right to reject the problem in certain cases.
Roles & Responsibilities
- The problems should be "Chef"-ified :-). It will be good to build the problem statement around a story that has Chef in it. It is desired but not mandatory.
- For every problem you submit, you must provide:
- The problem statement. Please find the suggestions and template for writing a problem statement here.
- The solution with appropriate comments for understanding. This is mandatory and should be submitted while submitting the problem.
- Test Data
- Test Cases: A set of input files and expected output files.- Test generation plan: Find the guidelines for creating a test generation plan here.- Test data generator
- If using random in test data generator, make sure to use a fixed seed so that the same data can be generated.
- A write-up explaing the solution in detail, and inputs regarding the problems to the Editorialist for making the editorials.
- The prerequisites to solve the problem.
- The difficulty level of the problem, which will be verified and approved by both the Problem Tester and a CodeChef Admin. Refer to Difficulty Levels.
If you do not provide all 6 of these requirements (after creating the final problem), your problem will not be considered for a contest!
- You can use pictures or references required to explain the problem. You may send us pictures to upload on our server if you want to use them in your problems.
- No cheating! You are not allowed to participate in a contest that includes your problem. Also, you are not allowed to share any information about your problems or answers with anyone.
- No plagiarism! If we find you simply substituting names or numbers from other problems, we will not accept your problem. Even using the idea of an existing problem is not acceptable. You and your institution could also be banned if you are caught plagiarizing.
- You are also not allowed to share your submitted problems elsewhere without our prior consent.
- We're serious. We require that you sign a Non-Disclosure Agreement.
- If we accept your problem, you must be available during the contest to resolve any issues pertaining to your problem.
- You will have to reply / moderate / approve the comments on your problems when they are used in a contest at the soonest. For short contests, you have to be online during the whole duration of the contest. For Long contest, you have to login every day to approve / reply comments. The tester/ editorialist may help you in this, but it is primary responsible of the problem setter to address the comments.
- The total number of test files for a problem should be kept to minimum (preferably not exceeding 10 for the hardest problem and not exceeding the number of subtasks for the easy ones). If needed, more test data can be added to the existing test files. (The reason being the judge get overloaded if there are more test files)
- If we accept your problem, you must also answer the questions or any queries pertaining to it even after the end of the contest on the problem discussion forum. Most of the questions are asked till 1-2 weeks after the contest ends.
- Under the exceptional situation of your problem having identified to have weak test data after the contest, you have to add additional test data to improve the problem in the practice section.
- FAQ for problem setting
Schedule
You can have a look at our sample schedule here:
LONG | COOK-OFF | LUNCHTIME | |
Pre-approval of slot | NA (problems are selected by CodeChef admin based on topics and difficulty level needs) | 30 days before the start of the contest | 30 days before the start of the contest |
Submit Problem ideas | 40 days before the start of the contest | 30 days before the start of the contest | 30 days before the start of the contest |
Number of problem setter in a contest | Multiple | Usually one | Usually one |
Compensation
PROBLEM DIFFICULTY | |
Cakewalk | USD 20 |
Simple | USD 30 |
Easy | USD 50 |
Easy-Medium | USD 80 |
Medium | USD 125 |
Medium-Hard | USD 175 |
Hard | USD 250 |
Super Hard | USD 350 |
Challenge | USD 175 for classic, USD 200 for interactive |
Whole Set - LONG | - |
Whole Set - COOK-OFF | USD 525 |
Whole Set - LUNCHTIME | USD 525 |