As you may have seen, I've written a lot of problems.
In this post, I want to go over each of my problems and describe my thought process for how I created each problem. I got this idea from antontrygubO_o, but I was also inspired by McDic's editorials that included a "behind story" for each problem. Anyway, I thought it would be fun to give you all a glimpse into my thought process: where my ideas came from, the obstacles I encountered along the way, and any random tidbits that give a bit more pizzazz to the problems.
I think it's important to remember that problem-writing is a creative endeavor, so I hope you'll enjoy reading about the making of my problems as much as I enjoyed creating them. And who knows, maybe you'll even be inspired to write some problems of your own.
Also, spoilers for a lot of problems. Obviously.
ID | Problem | Rating | Contest | Comment |
---|---|---|---|---|
001 | Domino Disaster | 800 | Codeforces Round #742 | The first problem I ever wrote. I'm firmly in the camp that thinks Div. 2A problems should be more implementation-based rather than random constructions or math formulas, and this is the perfect type of problem to embody that spirit, I think. Easy enough for basically everyone to try and solve. |
002 | MEXor Mixup | 1000 | Codeforces Round #742 | Actually, this was the first B problem I had seen involving the idea of "precompute answers between test cases", and it seemed to trip a few people up (including LGMs!). Luckily, I was aware of the idea when later problems with similar ideas came around. |
003 | Carrying Conundrum | 1600 | Codeforces Round #742 | A nice idea, I think, but I wish I would've made the "answer extraction" a little cleaner. |
004 | Expression Evaluation Error | 2000 | Codeforces Round #742 | This problem was originally proposed as C (and in my opinion, is easier than the above problem). If you want a free 2000, I recommend you do this problem. |
005 | One-Four Overload | 2700 | Codeforces Round #742 | The first of my "sufficient = necessary" problems. |
006 | Chef and Pairwise Distances | 2012 | September Cook-Off 2021 | Geometry problem, yay! And it's also the archetype of "large inputs fail". |
007 | Ones Guessing | N/A | Codechef SnackDown 2021 Final Round | To say the least, I was quite thrilled to see my third contest problem be in Codechef SnackDown finals. It's a funny problem too. Something to think about: how can we write the interactor for this problem to fail every solution except the intended one? |
008 | Not Shading | 800 | Codeforces Round #766 | Well it looks like I broke my rule about hard/stupid constructive D2A. In my defense, however, I proposed this as D2B, and it was moved down (because the original D2A proposal was... worse, let's just say). |
009 | Not Splitting | 2700 | Codeforces Round #766 | I think this problem is quite easy, to be honest (I proposed it at E), but perhaps scary geometry terms threw people off. Or maybe it was slightly wrong but technically correct statement at the beginning of contest (because translators changed it like 10 minutes before). Oops. |
010 | Mango Market | 2393 | February Cook-Off 2022 | Quite goofy problem. I thought of it while studying for an economics exam, hence the flavourtext (the original name was "Monopsonistic Market"). |
011 | Magnet Sort | 1804 | February Lunchtime 2022 | I don't know how to say it, but this is the most generic ad-hoc problem I've ever seen. Yes, that's an oxymoron. |
012 | Colorful Stamp | 1100 | Codeforces Round #784 | And here come the Div. 4 problems! To be honest, I think it is quite hard to make a Div. 4D, because we're past the "just implement" problems, but it still needs to be easy... I think this problem is too hard for that slot, but somehow it managed to only be 1100. |
013 | Minimum Crossings (Easy Version) and Minimum Crossings (Hard Version) | 1400/1500 | Codeforces Round #790 | Back when Div. 4 final problem was just "use standard idea". I somewhat regret putting harder version, but I'm a sucker for subtasks. |
014 | Where's the Bishop? | 800 | Codeforces Round #799 | A simple but natural implementation problem. I'm happy with it. |
015 | Binary Deque | 1200 | Codeforces Round #799 | Though process behind this problem: "wouldn't it be funny if we had deque in Div. 4?" |
016 | 3SUM | 1300 | Codeforces Round #799 | Very natural and nice problem, and perfect for Div. 4. I like it. |
017 | 2^Sort | 1400 | Codeforces Round #799 | Very unnatural and ugly problem, and not perfect for Div. 4. I still like it. |
018 | XOR Mixup | 800 | Codeforces Round #803 | Ok so maybe I set goofy problems at D2A. In my defense, you literally can't get this one wrong. By the way, the déjà vu theme of this contest comes from the fact that the titles of each of these problems is a reference to some previous contest, which I don't think anyone saw (except Ari). This one's a reference to MEXor Mixup. |
019 | Rising Sand | 800 | Codeforces Round #803 | This problem definitely exists, and is a reference to Falling Sand. |
020 | 3SUM Closure | 1300 | Codeforces Round #803 | This problem was added very late to the contest (like, literally, two days before), so unfortunately there were many FSTs because a lot of people used some casework bash(. Testers thought that problem D (which was originally C) was too hard, but I didn't think so. I think I would've been happier with the round without this problem, but hindsight is 20/20. A reference to 3SUM. |
021 | Fixed Point Guessing | 1600 | Codeforces Round #803 | This would've been a really nice C, I think, but now it's just an easy D. Oh well. The idea is still cute. A reference to Fixed Point Removal. |
022 | PermutationForces II | 2300 | Codeforces Round #803 | This version of the problem is essentially due to errorgorn, because my original version just had some easy cheese. Also, I don't know why it's 2300, I was worried it was too easy for E. A reference to PermutationForces, obviously. |
023 | Equal Reversal | 2800 | Codeforces Round #803 | *The best problem I've made.* A surpising result where the obvious necessary condition is not in fact sufficient, and you have to think for a bit more what to do. I originally proposed it at D. Oops. I guess I was warned. |
024 | Long Binary String | 2900 | Codeforces Round #803 | This problem definitely is one of the problems of all time. Some might call it a knowledge check, but I call it a skill issue. A (very oblique) reference to Long Colorful Strip. |
025 | YES or YES? | 800 | Codeforces Round #806 | I didn't know what YES or YES was, until I saw it on one of v_Enhance's handouts. I still don't get K-Pop. |
026 | ICPC Balloons | 800 | Codeforces Round #806 | The only way to make a goofy implementation problem is to write one about the king of goofy implementation problems themselves. |
027 | Yet Another Problem About Pairs Satisfying an Inequality | 1300 | Codeforces Round #806 | I tried to make a problem with a title longer than the statement. I got close. |
028 | Colourblindness | 800 | Codeforces Round #817 | I legitimately don't remember making this problem. |
029 | Word Game | 800 | Codeforces Round #817 | Inspired by Scattergories, of course. |
030 | Line | 1100 | Codeforces Round #817 | Some random goofy greedy problem to fill in the slot. |
031 | Seven-Segment Factoring | 2675 | Starters 59 | A nice problem, because it looks super strange but you can get incremental observations that slowly make it more and more approachable. I wish there were subtasks. Sadly, since it was used in a Starters contest, barely anyone saw it(. |
032 | Sum | 800 | Codeforces Round #827 | uh |
033 | Stripes | 900 | Codeforces Round #827 | Div. 4C speedbump! More like a brake check actually... |
034 | Medium Number | 800 | Codeforces Round #835 | ok i literally cannot provide meaningful commentary for D4A |
035 | Quests | 1500 | Codeforces Round #835 | Another problem made backwards. I was wondering, "we have too many binary search on array problems in Div. 4, but no binary search on the answer..." |
036 | SSeeeeiinngg DDoouubbllee | 800 | Codeforces Round #836 | Ok I have no excuse for this, but at least this is easier than "here is random formula that trivializes". |
037 | Almost All Multiples | 1400 | Codeforces Round #836 | A random problem I came up with a few days before the contest to split the constructive problems up. It ended up being basically constructive. Darn. |
038 | Tick, Tock | 2500 | Codeforces Round #836 | Blame manish.17 for the flavortext. Also, I'm not sure why this is 2500 either, because I originally proposed it at D. Oops. |
039 | Decent Division | 3000 | Codeforces Round #836 | Cowritten with manish.17; I proposed an easier version where the ratio of ones to zeroes is between $$$0.5$$$ and $$$2$$$. Apparently the same solution could be adapted to this harder version. Somehow, it's the hardest problem I wrote, even though I wrote a harder problem that had to be removed from the contest because we found it elsewhere(. |
040 | Codeforces Checking | 800 | Codeforces Round #849 | insert witty remark here |
041 | Following Directions | 800 | Codeforces Round #849 | I'm quite happy with the double entendre of the problem title. The problem itself is a thing that exists. |
042 | Prepend and Append | 800 | Codeforces Round #849 | I actually like the idea of having concepts like two pointers being given in these implementation problems. |
043 | Range Update Point Query | 1500 | Codeforces Round #849 | i forgor how i made this problem, but I thought it was nice. |
044 | Teleporters (Easy Version) and Teleporters (Hard Version) | 1100/1900 | Codeforces Round #849 | I thought of making a problem with sorting by $$$i + a_i$$$, and this popped out. |
I do intend to keep this list live as I write more problems. Thanks for reading!
orz flamestorm
every problem I have ever made: