As you probably know, most of the rounds on Codeforces are created by active community members. We are very grateful to our talented authors from all around the world for bringing their ideas to tens of thousands of competitors, providing fun and learning experience for contestants of every expertise, from beginners to the world's top programmers. This post will cover the steps you need to take propose a round and become a problem writer on Codeforces.
Who can be a problem author
Best problems usually come from the most experienced participants. We have limited resources for rounds reviewing, so to make the process flawless for writers, starting January 1st, 2021, the following requirements for problem authors will be applied:
- rating: orange or above, or
- was a writer in the past.
The restrictions may be updated in the future, the post will be updated accordingly. If your round is already in the review status, don't worry, it will be reviewed regardless of the current restrictions.
If you are an experienced writer/jury member in other competitions, please write any current coordinator (listed below) a private message about your wish to prepare a contest and describe your experience in this area.
How to propose a round
If you meet the requirements, you should have the link "propose a contest/problems" in the personal menu on the right sidebar. Click on the link and follow the instructions carefully. Prepare and submit your proposal for a contest and problems.
In some time you will have a coordinator(s) assigned to your contest proposal. They will review your problems and you will discuss the problems with them. Please be active, respond to coordinators' questions in time, make the proposed changes quickly. Codeforces coordinators are very experienced participants and reviewers. Please respect their opinion, and note that they have the highest priority in any decisions on the problems.
You can only propose a whole problemset for a Div 2 or Div 1 + Div 2 round. We don't consider single problems. Also, we don't consider proposals for Div 3/4 or Educational rounds.
How to prepare problems
Problems for Codeforces rounds are prepared in Polygon. It is not recommended to prepare problems before the coordinator's approval, especially if it's the first time you propose a contest.
For each problem you will need to write a clear statement (in English or Russian), code a validator (a program that checks tests' correctness), a checker if necessary (a program that checks output), and of course correct solution. Also, you will need to create tests to check the contestants' solutions on. Your coordinator will do the statement translation if necessary, check your work, and suggests what to change and add if needed.
Before you start working on problems, even if you have experience working with Polygon, you must read these rules. All the work with checkers, validators, interactors, and generators is done with testlib.h library, you can read the introduction by the link and download examples from Polygon. Whenever you have any troubles and/or difficulties, contact your coordinator for help. It is much faster to do something right from the first time, then to do it wrong and then redo it again.
It is interesting and challenging work to invent and prepare problems but is also time-consuming and demanding work. That's why we pay authors for preparing problems for Codeforces. The rewards are:
|Div 1 + Div 2||$400|
We reserve the right to reduce a reward by $50 if something in the round goes wrong because of the authors' fault.
*Global rounds are selected by coordinators from available proposals.
Best Div 1 + Div 2 rounds can be selected to be sponsored, in this case, the authors' reward is higher and is discussed separately.
We hope that with your help we will keep the regular stream of regular rounds full of fresh and interesting problems! If you have any questions on how to become a problem writer, ask in the comments. Please note that unrelated or outdated comments in this blog will be cleared once in a while to keep the blog and comments up-to-date.