post

How I Became a TopCoder SRM Problem Writer

I have been writing SRM problems quite often in past months. It has been a very exciting experience for me. I would like to recall how I became a problem writer in this competition…

Member SRM 489

… so I would like to suggest you to write Div-2 part of Member SRM 489. If you agree,

Thanks,
Ivan

That was my first approval statement from mystic_tc (Ivan) for writing an SRM. Yay! I received that email after I proposed a problemset for a Member SRM. Ivan posted a “Looking for Member SRM 489 writers” thread in the forum, then I tried to propose, and I was glad that the proposal was approved. I was really really happy that time.

For those who don’t know, Member SRM is actually a regular SRM whose writers and testers are not paid. It is voluntary for keeping 3 SRM per month. That was OK for me as what I want was the experience of working together with the admins to prepare an SRM.

I actually proposed a complete set of five problems, but it turned out that the Div-1 problems did not satisfy Ivan. Yes, when I read the problems now, I realized that they are very lame problems. Therefore, Ivan assigned me to write only the Div-2 part. The Div-1 problems were written by rng_58.

After being assigned as a writer, I had to sign an agreement document and sent it to Glastonburry (Indonesia – USA, incurring an expensive JNE fee :(). And then I logged in to a Java applet called MPSQAS (Member Problem Submission Quality Assurance System). This is where the complete problem statements, solutions, and test cases are uploaded to. Only approved writers can create problems there, obviously. To be approved, you must apply for a writer there (I did that after I proposed the problemset).

For Member SRM 489, Ivan also assigned two testers, vexorian and liympanda, also a language checker, eleusive. Overall, testers are responsible to submit their solutions to all problems and give feedbacks about the difficulties of the problems. The language checker is responsible to check the spelling and grammar of all statements, since most of the time the writers are not native in English. He/she also usually gives suggestions about the background stories of the problems.

While the writer writes the statements, testers will give feedbacks as a correspondence — every single feedback will be recorded in MPSQAS and emailed to all writers and testers. So, the problem creation lifecycle typically consists of writing statements, receiving feedbacks, update statements, receiving feedbacks, and so on until we are all satisfied and agree with the final statements.

My problems for this SRM were:

  • D2-250: BadVocabulary
  • D2-500: Buying Flowers
  • D2-1000: SolitaireChess

The point distribution of the problems are also discussed, moderated by Ivan, usually when the problem statements have been finalized. In this SRM, the distribution was normal, 250-500-1000 in both divisions. Quite often the distribution varies if one or more problems have more/less difficulties than usual. The easy problem is usually worth 250, 275, or 300 points; the medium 450, 500, 525, 550, or 600 points; the hard 900, 925, 950, 1000, 1050, or 1100 (very hard!) points.

After spending a lot of efforts on polishing the problems, then the match started. Writers and testers are given special accounts, writer, writer2, tester, and tester2. We can log in to the Arena as admins! With these orange handles, writers, testers, and admins:

  • are in ninja mode: we can read all whispers!
  • can read the coders’ solutions in coding phase.
  • are responsible to answer clarifications regarding the statements/constraints, usually giving “please reread statement” answers.
  • usually bet on the approximate number of solvers of each problem.
  • have fun watching the division summary. Yes, it is always fun to watch people solving our problems!

The sad part was that until the match was over, nobody solved my D2-1000 🙁 actually it was to be solved using a “classic” dynamic programming.

SRM 512

Several months later, I got an interesting problem idea which I thought would fit for a D1-Hard (PickAndDelete problem). I came up with a D2-Hard not long after that (after inventing a D1-Hard, it seems easy to come up with the rest!) and the other three problems before them, and then proposed the problemset to Ivan. Luckily, Ivan approved my entire problems and even invented a better solution for D1-Hard (N^3 –> N^2 lg N). Chmel_Tolstiy was assigned as the tester.

The points distribution for this match was unusual, 256-512-1024 for both divisions. This was Ivan’s cool idea as it was SRM numbered 512, so all problems had points that were powers of two. I think this was the first time that the point of each problem is not divisible by 25.

It turned out that there were 11 coders that solved the D1-Hard and nobody used Ivan’s faster and smarter approach. Oh, I admit that his solution is so smart that I believe I could not come up with that idea at all! That showed the true power of an SRM admin 😀

After the match was over, Ivan asked me whether I was going to write the editorial. I accepted that request and carefully wrote my first SRM editorial, although a bit risky because it was my first time to write. Surprisingly, it seemed that many coders liked my editorial and eventually it got +39/-0 reputation.

This was my first paid SRM. I earned $525 for the problemset (five problems) and $75 for the editorial. A very good payment!

SRM 520

So this was my third SRM. I created the problemset with a nice theme, i.e., the SRM itself (what a recursive contest!). The problems were:

  • D2-250: SRMRoomAssignmentPhase
  • D2-500/D1-250: SRMCodingPhase
  • D2-1000: SRMSystemTestPhase
  • D1-500: SRMIntermissionPhase
  • D1-1000: SRMChallengePhase

See, the problem names are the phases in a usual SRM 🙂

This was the first SRM [[rng_58]] (Makoto) moderate as the new algorithm coordinator, after successfully winning TCO 2010 and TCO 2012. This was the first match after TCO 2012 finals. In this match, Makoto the new admin invented a better solution for D1-1000 and thus we raised the constraint from 50 to 2500! Like I said, SRM admin is unbeliavebly smart, whoever he is.

Mr. Dengklek, the main character, first appeared in this SRM (and then always appeared in my subsequent SRMs). He is the main character of Indonesia’s national olympiad in informatics, for those who don’t know.

I also wrote the editorial for this match. People seemed to like this editorial too, and it got +37/-1 reputation.

SRM 526

Before I competed in ACM-ICPC Asia Manila Regionals 2011, I proposed another problemset to Makoto. He accepted all problems except the D1-Hard. However, he assigned me to a match and asked me to improve the current D1-Hard or to come up with another problem.

The match would start right after I came back to Indonesia from Manila. It turned out that Makoto also competed in the same regionals. And (intermezzo) guess what, his team won the regionals, obviously!

Almost every night in Manila we discussed about the D1-Hard via chatting. Since I could not invent a good Hard for days and the match day was approaching, Makoto proposed to use his own problem, DengklekMessage (previously named FaxCiel and CielMessage). He said the problem was invented by Ivan and him together. I accepted the proposal. Makoto then asked to be a tester for the problem; I also accepted that although I was not fully confident.

One day before the contest started, I solved the hard with a simple matrix exponentiation algorithm. Makoto then said that the solution was quite trivial and he had to rewrite the problem, the statement, solution, and test cases. The current version is harder and I could not solve it before the match.

I didn’t write the editorial this time as I had so many college assignments. It was vexorian who was finally assigned to write the editorial.

SRM 532

Yet another SRM written by me. Not much to say.

For this match I created a turned-out-to-be-very-tricky D1-Easy (DengklekMakingChains). It was so tricky that during testing, Makoto counted that:

  • my solution failed twice,
  • Makoto’s solution failed twice, and
  • Ivan’s solution failed once. (he won! :p)

As all testers wrote wrong solutions for this problem, it was assigned 300 points. However, even after adding very strong examples cases, so many people still got challenged and failed the problem. Makoto even said that this problem could be a 500-pointer with arbitrary length of chains and very weak example cases.

SRM 537

This one was quite an unexpected SRM for me.

Once I proposed a complete problemset to Makoto, and (again) he approved all except the D1-Hard. Then I had a quick chat with dolphinigle asking whether he had a free D1-Hard problem, and he said he had free D1-Hard and D2-Hard problems. We agreed to make a collaborative SRM. We then tried to contacted Makoto, and he immediately approved our idea and assigned us to this match.

I heard that problem writers are rare lately; that might be why he approved to create an SRM with two writers.

Anyway, we had to agree with a common theme for the problems. I suggested the Kingdom of Ducks background story as usual, and he suggested to use <Theme>X<Name> format for the problem names. Therefore, we agreed KingX<name> for my problems and PrinceX<name> for his problems, featuring King Dengklek and Prince Gogo. A good fusion, eh?

Random thought: I still liked the example cases in my D2-Easy problem — it consists of all people preparing this match: “dolphinigle”, “gofushar”, “rngringo”, “mystictc”, “misof”, “metelsky”, and of course, “dengklek” 🙂

Phew, that was quite long story. To sum up, I have been a writer/one of the writers of six SRMs up to now, and I am very happy. Problem setting at TopCoder is an interesting experience! (And of course it generates revenue :P)

I hear that nowadays writers are not as many as they were before. If you want to try to write problems for SRM, please read the Write Problems for TopCoder page.

About Ashar Fuadi

Ashar Fuadi is a competitive programmer from University of Indonesia. He loves to code, especially for TopCoder SRM, Codeforces, and ICPC.
Follow Ashar on Google+ and Twitter.

Comments

  1. Gaurav Gupta says:

    Very well written article Ashar…

  2. Rishabh says:

    Hi, how did you came to know that the solution is wrong in SRM 532 since all the testers got it wrong?

  3. Ashar Fuadi says:

    @ Rishabh: we eventually realized all our mistakes (we did similar mistakes) and wrote the correct solutions 🙂

  4. Rishabh says:

    Thanks for the response 🙂
    Could you guide on how to prepare test cases once we have wrote a problem?
    And does the responsibility of making test cases solely lies with problem setter or do testers have a say in it ?

  5. Ashar Fuadi says:

    This is a nice guide on it: http://code.google.com/codejam/problem-preparation.html#iogen
    It is the problem setter that is responsible for creating test cases, but the admins sometimes add additional strong test cases if necessary.

  6. Good job Fushar.

Trackbacks

  1. […] After reading a blog post from fushar. I decide to spam him saying that I must be better than the admins since I solved SRM […]

Speak Your Mind

*