By MikeMirzayanov, 10 years ago, translation, In English

Hello Codeforces.

Just a reminder about something most of you know. Polygon is a service to prepares programming problems and contests. It is usually used to prepare problems for olympiads/programming contests but it is also often used to prepare educational content. It is located at https://polygon.codeforces.com/ and is open to everybody.

I have recently found out that it's been more than five years since the creation of Polygon. It's high time to summarize the experience we've accumulated.

I first publicly spoke about Polygon in a narrow circle of Russian teams' coaches on ACM-ICPC World Finals in 2009. I cannot say that everybody was enthusiastic about the innovation. Some people were openly skeptical about such system's viability and relevance. After 5 years on the ACM-ICPC finals in Ekaterinburg Oleg Hhristenko (snarknews) said that in his opinion, the creation of Polygon is more of my achievement than Codeforces. Of course I was surprised but I said so to Polygon :-)

When I started working on Polygon (in the autumn of 2008), I understood very well how much this system was needed. By that time I had already been an experienced writer of many problems. The infinite number on highs-school Saratov Olympiads and ACM-ICPC Subregionals. My problems were on the All-Russian Team School Student Olympiad in Programming, the Russian National Olympiad in Informatics (for High-School Children), the ACM-ICPC NEERC Regionals, the TopCoder Open Finals and many other places. In most cases the problems were developed in some VCS (e.g. SVN) everything was structured by some half-formal unspoken naming rules.

I am going to give you some thesis statements on why it is good to use Polygon and bad not to.

1. Polygon protects from errors

Polygon is full of automatization, self-checks and verifications. Some examples:

  • it is hard to make a misprint in a sample input/output and forget to actualize it after the tests are changed as it is inserted automatically and the answer is generated by Polygon using the model solution;
  • it is hard to leave a non-compiling solution in the archive (even experienced teams like ITMO regularly leave the solutions on Java in the archive where the name of the class doesn't match the name of the file);
  • it is hard to forget to make the first test the statement test, Polygon would warn you about it;
  • it is hard to write a generator that is initialized from time and thus it prints different tests on consecutive invocations (i.e. not stable), Polygon will run the generator a couple of times with an interval of one second and check if the tests match.

2. The archives (packages) of the Polygon problems are uniform and machine-readable

It's striking that the olympiad community hasn't standardized a method to distribute problems. The problems from Polygon have a uniform and logical way of organizing files and are machine-readable. File problem.xml contains not only the basic meta information like memory limits, but it also has everything you are going to need for the continuing work at a problem. Here are some examples:

  • for TL it shows the type of the processor for which the TL was chosen;
  • it clearly shows the IO method and file names (if used);
  • it supports multiple native languages in for problem title/statements;
  • It has an exact way to generate each of the generated tests;
  • solution tags (for example, a deliberately slow solution can be tagged as time-limit-exceeded);
  • precise paths to tests and other resources.

I don't know any other machine-readable descriptor formats in use that are so complete.

3. Polygon stores files for long-term and keeps them available

I can open the problems of the ACM-ICPC Saratov Subregional 2009 and edit a test. Everybody who has access to the problem can do the same. All the changes will be visible to all the coauthors, they will be notified via email and the automatic testing systems can get the changes when new problem package is built. I can run the solutions as I edit, all tests will be validated, all the solutions will be ran. But what happens if you don't use Polygon? For the time of contest developement a local version control system is used, it is usually shut down later and only the archive remains: we lose editing history, developing access, automated invocations and other things.

4. Polygon decreases the barrier to entry the problem preparation process

The Codeforces problem writers are the contest participants of different level of training, cultural and professional background, for many of them it's their first experience of preparing problems. They almost always easily understand what to do and how to do it, they can add problems. If you don't use Polygon, then the process is usually regulated by a system of unspoken rules (like, add suffix _slow, or _tl to the title of the slow solution), an unexperienced participant gets lost and cannot understand what to begin with and how to work. Besides, it usually requires some knowledge of basic principles of working with svn and command line and work differs for the Windows and Linux users.

5. Polygon helps you manage access

In Polygon you can give access to the problem to any registered user. If you work without Polygon, it is usually done by the version control system server administrator and you don't even have the list of your co-authors. You cannot manage access on your own, the access is usually managed at the contest level, not problem level.

6. Polygon has issue-tracking

When there is more than one developer working simultaneously, they absolutely need to be able to add and manage issues. Besides, issue-tracking is useful in individual work as well. It structures work, helps you not to lose track of the details. Whenever I've worked outside Polygon, the best task management I saw was a special file with a numbered list of tasks.

7. Polygon is easily integrated with online judges

Polygon offers machine-readable problem packages with prepared tests (for both Windows and Linux) or enables to generate them at package deploying. Polygon has a simple HTTP POST-based API to access data. While POST-queries are formed, you need to set the user's login and password parameters (and optionally, revision).

Say no to manually copying problems into the judging system, let the system upload the problem for you and deploy or update it.

8. Without Polygon the developer needs to have some special soft on his PC

For example, a developer with Windows may need bash to run doall.sh that generates all the tests. Or a Java programmer will have to install C++ to compile the checker. Use LaTeX to compile the statement. Polygon sets you free from all of that, lots of work is done on the side of the server.

9. Polygon is safer than most alternative ways of shared development

Polygon uses HTTPS, you can attach browser session to IP-address (it is optional, of course), session is attached to User-Agent, we use CSRF-tokens everywhere.

10. Polygon classifies and indexes problems

You will never get lost in problems. I have about 500 problems in Polygon made by me only, but due to tags, filters, search and sorting into contests I never get lost in them and can quickly find what I need.

The End

Those are only the first reasons that came to my mind at 2 AM. I am sure that we can come up with some more of them after some thorough thinking.

The conclusion is simple. Every time you make a problem not in Polygon, god kills a kitten.

Full text and comments »

  • Vote: I like it
  • +260
  • Vote: I do not like it

By PrinceOfPersia, 10 years ago, In English

Hello everyone.

Soon, On the night after the Halloween, there will be a Codeforces gym contest, named Crypto cup 1.0.

Like its name, it's a cryptography contest and for all problems, you are given some sample encryptions encrypted using a certain algorithm and you have to write a program to decrypt the given messages.

There will be 18 problems and you have 6:30 hours to solve them. I hope it will be interesting.

Problems are prepared by me (PrinceOfPersia) and tested by Damon also thanks HosseinYousefi for editing problem statements.

For practicing cryptography, we recommend SecutiryOverRide's cryptography challenges.

Also, this round needs a little Algorithm and CS knowledge.Don't forget to pay attention to problem's titles, they might be helpful ;)

Currently, problems are being prepared, so you're unable to see the contest in gym contest list yet.

Problems are in decreasing order of difficulty.

UPD: Duration has been increased by half an hour, now it's 6:30 .

UPD2: Please note that contest will be held on November 1st, because it had overlap with Shahid Beheshti University ACM.

UPD3: Now it's in the Gym contests list.

UPD4: Registration is open.

UPD5: Contest is over.

I hope you enjoyed the problems.

Congratulation to the winners who solved all the problems :

  1. I_love_Hoang_Yen

  2. Team Flareon : Localhost, DiEvAl, Visconte

  3. kennethsnow

  4. niklasb

  5. 135678942570

Complete standing

Be aware, our standard rounds are coming... ;)

Full text and comments »

Announcement of Crypto Cup 1.0
  • Vote: I like it
  • +132
  • Vote: I do not like it

By MikeMirzayanov, 10 years ago, translation, In English

Welcome to 2014-2015 CT S02E07: Codeforces Trainings Season 2 Episode 7. The training duration is 4.30 hours. It is opened for teams as well as for individual participants. After the end you may use the practice mode to complete problem solving. Also it will be availible as a virtual contest for whose of you who can't take part today. Please, do not cheat. Only fair play!

It is possible that the problems will be too easy for some participants, it is possible that we will add some problems.

Good luck!

Full text and comments »

  • Vote: I like it
  • +26
  • Vote: I do not like it

By BYN, 10 years ago, In English

And the winners are:

Bayan Programming Contest

(Participants Qualified for the Final Round of Bayan Programming Contest 2015)

  • If you are a t-shirt winner, double check your information on your Bayan Contest Profile.
  • T-shirts will be sent after the final event which is going to be on early 2015.
  • We might invite one of the t-shirt winners as our event blogger to the onsite final.
  • Finalists will receive invitation emails and will be asked to send us a copy of their passport. The invitation letter will be send from "contest at bayan.co.ir".
  • Unfortunately we found some cheaters and also people with duplicated accounts. As mentioned before they will be banned for ever from Bayan Programming Contests.
  • To view the Source codes, log in to contest.bayan.ir, select the round and on the scoreboard click on the score for each problem.
  • T-shirt Winners of Bayan Programming Contest 2014-2015
  • High ranked countries in top 50
  • High ranked countries in top 100

Full text and comments »

  • Vote: I like it
  • +96
  • Vote: I do not like it

By lperovskaya, 10 years ago, In English

We gladly invite you to participate in the Three Subregionals Cup 2014 – a team-based online programming competition parallel to the ACM ICPC Subregionals in Moscow, Minsk and Saint Petersburg. The tournament will be organized by the team of Yandex.Contest and the jury of the Subregionals. The online rounds will be held on the Yandex.Contest system. The dates and start times of subregionals are: Moscow (registration) – October 26th, 11:30 MSK, MinskNovember 6th, 12:00 MSK, Saint Petersburg – November 8th, 12:30 MSK.

Teams that participate in the onsite version of one of the three quarterfinals will be able to participate in the online versions of the other quarterfinals via Yandex.Contest. Teams that don’t participate in any of the three quarterfinals onsite will be able to participate in all of them online via Yandex.Contest. Cumulated results of three subregional contests will be calculated based on Grand Prix 30 scoring system.

You can register for the online rounds at any time. You can represent a single person or create a team using the My teams link. Each invited team member has to confirm his participation in the team. You can choose participation type and team members upon registering for the contest. Note that OpenCup dedicated logins will not work at this contest!

The rules of the online rounds correspond to the onsite quarterfinal's rules.

For your convenience a test contest is available.

UPD Official Moscow QF results

UPD2 Western QF is right around the corner!

UPD3 Northern QF will start tomorrow at 12:30 MSK.

Full text and comments »

  • Vote: I like it
  • +114
  • Vote: I do not like it

By MikeMirzayanov, 10 years ago, translation, In English

The contest has been moved to the Gym.

Today it will be ACM-ICPC, NEEERC, Southern Subregional Contest! As a head of judges I wish good luck to all the participants!

On Saturday (October, 25), 07:00 (UTC) it will be a internet-mirror: [contest:481]. Interesting problems are waiting for you. Judges tried to prepare problems of wide difficulty range: for newcomers and for expirienced teams.

For sure, it will be unrated contest. We recommend you to take part in teams. I think, the contest will be moved to Gym later.

Good luck!

MikeMirzayanov, head of judges.

P.S. Saratov Views:

Full text and comments »

  • Vote: I like it
  • +353
  • Vote: I do not like it

By gridnevvvit, 10 years ago, translation, In English

Soon (on October 24, 21:00 MSK) you are lucky to participate in Codeforces Round #275 for both divisions. Pay attention to the round begining time!

Problems have been prepared by team Saratov SU #3 with members: Gridnev Vitaly (gridnevvvit), Danil Sagunov (danilka.pro), Roman Kireev (RoKi).

We want to thank Max Akhmedov (Zlobober) for help with preparation of this round, Maria Belova (Delinur) for translation of statements and Mike Mirzayanov (MikeMirzayanov) for marvelous Codeforces and Polygon systems.

Scoring system:

Div1: 500 1500 1500 2000 2500

Dvi2: 500 1000 1500 2500 2500

UPD:

Contest finished, congratulations for winners!

Div1:

  1. tourist
  2. Petr
  3. subscriber
  4. uwi
  5. PavelKunyavskiy
  6. mmaxio
  7. Ra16bit

Div2:

  1. dickXD
  2. meodorewan
  3. charlie

Full text and comments »

  • Vote: I like it
  • +191
  • Vote: I do not like it

By BYN, 10 years ago, In English

Elimination Round will start today, 14:30 (UTC) and only contestants who have passed Qualification Round will be eligible to participate.

Score for each solved problem is calculated based on these values:

  • n = No. of accepted submissions
  • t = Contestant's submission time
  • p = Number of contestant's wrong attempts

To receive the latest news fast, follow us on twitter: @bayan

Update 1: The Elimination round is over, and let's face it: It was far from good!

Yes, we're aware of all the issues, and we know that nothing is more nerve-racking than facing those issues during a competitive contest. So, first thing first, we'd like to sincerely apologize for all the inconveniences caused.

In last hours, we thought that the contest has become too hard, so we made a major wrong decision: omitting a hard problem and adding a simple problem as our first question without enough time. Hint: never make any changes to the problem set in a hurry.

Update 2: Editorial is on the way. Source codes will also be avalible in a few hours.

Update 3: Unfortunately we have found some cheaters. As mentioned before they will be banned for ever from Bayan Programming Contests.

Update 4: The editorial is now available.

Full text and comments »

  • Vote: I like it
  • +101
  • Vote: I do not like it

By Nerevar, 10 years ago, translation, In English

Greetings to the Codeforces community!

Yet another Div1+Div2 round will take place this Sunday, 19th of October at 13:00 MSK.

The round is based on the problems of the regional stage of All-Russia team school competition, which will take place at the same time in Saratov. We are aware about the overlapping with Opencup, but we have no option to shift the round, because we are bounded to the local event.

The problems were prepared by HolkinPV, gridnevvvit, danilka.pro, Avalanche, IlyaLos, Fefer_Ivan and me.

Scoring: 500-1000-1500-2000-2500 (both divisions).

UPD: Editorial is published.

Full text and comments »

  • Vote: I like it
  • +137
  • Vote: I do not like it

By MikeMirzayanov, 10 years ago, translation, In English
  • Vote: I like it
  • +66
  • Vote: I do not like it