FAQ for Problem Setters
- General Questions :
- Q. How do I apply to be a problem Setter/Tester?
- Q. How much do I get paid for submitting the problem?
- Technical Questions:
- Q. What kind of problems are you looking for in the Exact Algorithm Problems category?
- Q. What kind of problems are you looking for in the Challenge Problem category?
- Q. What files do I need to submit along with the problem?
- Q. How do I send you all the files?
- Q. How many problems can I submit?
- Q. What if my problem has multiple test case files?
- Q. Can my problem have partial scoring?
- Q. Additional related information will be available in the following spaces.
Here is a quick FAQ as to what you need to do before sending us the problems and if/how your problems will be used in our contests. Now, at present, we have 2 types of problems in our contest. The first category is the exact algorithm contest problems which have either a wrong or a correct answer. The other type is the challenge problem that we have in each contest. This problem is such that it does not have a deterministic solution. Which means that there is no algorithm that will give an optimal answer for the problem. Submitting problems for both these categories is slightly different.
General Questions :
Q. How do I apply to be a problem Setter/Tester?
If you would like to become a Problem Setter or a Problem Tester for Codechef, write an email to email@example.com . Further details on what the email should contain and on the entire process are available in the 'How to get Started' section at the bottom of the Problem Setting page here.
Q. How much do I get paid for submitting the problem?
A. We believe that problem setting is an extremely creative and challenging task. And most of the problem setters who set problems for us do not take it up for the lure of the compensation. The fun and the excitement of being a part of the process and challenging the best coders out there to smack their brains on your problem is in itself very rewarding. And to be frank, this task can never be well compensated in terms of money.
However, we do try to make a small payment as a token of appreciation for your efforts to make this community a fun place. For details of the compensation and difficulty levels of the problems and other problem setting guidelines please have a look here.
Q. What kind of problems are you looking for in the Exact Algorithm Problems category?
A. We are looking for problems which are not standard ones or ones which are not easily 'googleable'. The problem should be such that it induces the solver to spend time to think of a solution to the problem rather than search for it online.
Q. What kind of problems are you looking for in the Challenge Problem category?
A. We are again looking for problems which are not very highly researched. The approaches for such problems should not be available online easily. The problems should not have a polynomial time solution. The challenge problem has a scoring mechanism based on certain parameters. This scoring mechanism needs to be explained properly in the problem statement submitted by you. Also, you need to specify whether the optimal solution minimizes this score or maximizes this score.
Q. What files do I need to submit along with the problem?
A. You need to submit the following files :
1) The problem story line. This is the main body of the problem that the participant will read. This should not be ambiguous and should be clear and interesting. It should specify the input format, the output format as well as the constraints on the input and if any, on the output.
2) The solution in a programming language of your choice. This solution should be such that it takes in the input data in the specified format and produces the correct output according to the output format.
3) The test input data. This input data should have all the corner cases covered and should have a few randomly generated test cases too. If there are multiple input files, label them as 0.in, 1.in, 2.in and so on and place all of them in a folder called 'input'.
4) The output test data. This is the output data corresponding to the input data mentioned previously. The expected output for 0.in should be placed in 0.out, for 1.in should be in 1.out and so on. Place all these files in a folder called 'output'.
5) A small write-up of the approach taken. You need to give us a small write-up about the approach taken to solve the problem.
Q. How do I send you all the files?
A. Refer this link for uploading problems.
Q. How many problems can I submit?
A. You can submit as many problems as you like. If we like a problem, we will use it in one of our contests. If we decide to use your problem in our contest, you would not be eligible to participate in that month's contest. You might want to send us a set of 4-5 problems so that we might use a higher number of problems in the same contest. Refer this link for details pertaining to problem setting.
Q. What if my problem has multiple test case files?
A. If your problem consists of multiple test case files, you need to put the relevant test case file numbers in the field titled "*Problem test sequence*" on the problem edit page. If you have 3 test case files numbered 0, 1 and 2, then the "*Problem test sequence*" field should contain "#0 #1 #2" without the quotes.
Q. Can my problem have partial scoring?
A. You can set type of the problem to a challenge and write a judge which gives some amount of points for individual test cases. Ex. if someone solves both test cases then he gets 1.0 point, if only the first test case then he gets 0.4 points. The score of the first user will be 1.0 / MAX(=1.0) = 1.0, whereas the second user will get 0.4 / MAX(=1.0) = 0.4.
Refer here for more details.