29 December 2019

Good Bye 2019 Postmortem

Link to contest here

What went well
  • I managed to prove that my solution to B is optimal.
What went wrong
  • Proving that my B solution is optimal took close to an hour.
  • I wasn't sure what to do with C. After expressing the sum as S and the xor as X, I first fell into a trap thinking that I can do it with one number, i.e. S + a = 2*(X ^ a). Nothing really came to mind. Then I thought about using two numbers, i.e. S + a + b = 2*(X ^ a ^ b), where I use a to get rid of S, i.e. make the bits of S be all 0s or all 1s. This led me to think about the lowest power of 2 greater than S, but nothing came to mind. I also never thought about using a to get rid of X, i.e. maybe set a = X, which then leads to a really nice solution S + X + b = 2*b, i.e. b = S + X.
 Where I got lucky
  • A is a 3 minute problem!

28 December 2019

COLDforces Round #611 (Div. 3) Postmortem

Link to contest here

What went well
  • The contest was at 9am local time, so I had a good 2.5 hours to wake up.
What went wrong
  • I was ill with a cold (laryngitis?!)
  • My solution to E died to a silent index out of bounds!!! Time to switch to vector<T>::at() instead of vector<T>::operator[]?!
  • I did not think of a working solution for C during the contest, but did so after the contest (and doing the obvious greedy solution worked and was easy to prove correct…) The junk that I submitted managed to pass system tests, but eventually got exposed by the serial hacker, who hacked over 20 C submissions!
Where I got lucky
  • I got my first 1 minute submission!!
  • C was such a massacre that I managed to gain elo despite solving only 3 problems! Back to blue again!

27 December 2019

Educational COLDforces Round 79 Postmortem

Link to contest here

What went well
  • Nothing really…
What went wrong
  • I was still ill with a cold (laryngitis?!)
  • I took a few passes to understand B; I misread the problem the first couple times. Eventually I got the problem after nearly an hour.
  • I didn't realize that I misread C until after the contest. I thought one can remove multiple presents in between popping and pushing back the unused presents.
Where I got lucky
  • A was back to a straightforward 3-minute problem.

24 December 2019

COLDforces Round #610 (Div. 2) Postmortem

Link to contest here.

What went well
  •  I was able to figure out a clean solution for B2.
What went poorly
  • I was ill with a cold (laryngitis?!)
  • I wasn't sure how to do C because I wasn't able to prove optimality of a solution.
Where I got lucky
  • Not today

19 December 2019

Educational Codeforces Round 78 (Div. 2) Postmortem

Link to contest.

What went well
  • I got A in 3 minutes.
What went poorly
  • I wasn't sure how to prove B during the contest. Then I decided to binary search when a linear search would have run in time. However, I had a bug in my binary search because I needed to look at particular residues mod 4, which required extra debugging to get right. All this took…1.5 hours.
  • I was completely wrong for C because I didn't realize that not all larger subarrays may work.
Where I got lucky
  • Apparently I probably won't lose too much elo.

17 December 2019

Codeforces Global Round 6 Postmortem

Link to contest.

What went well
  • I solved A, B, C.
What went poorly
  • I don't know the properties of natural numbers divisible by 60. My solution is so disgusting that I would happily nominate my solution for this year's Wall of Shame. 
  • I misread B and thought that the tower of dice was visible from just the front, instead of both front and back.
Where I got lucky
  • I didn't lose much elo for a mediocre showing.

15 December 2019

Codeforces Round #607 (Div. 2) Postmortem

Link to contest.

What went well
  • I solved A in 2 minutes.
What went wrong
  • I was too hasty on B, leading to two wrong submissions, and took a total of over 20 minutes.
  • I took over an hour on C because I wasn't clear at all about my recurrences and starting values. 
Where I got lucky
  • Everyone else sucks more at math, so a slow C with one penalty got me in the top 400 (top 6%).

05 December 2019

Codeforces Round #604 (Div. 2) Postmortem

Link to contest.

What a dumpster fire of a contest.

What went well
  • I got B quickly.
What went wrong
  • I didn't know how to solve A, so came up with a horribly convoluted solution with lots of cases. This and weak testing resulted in an incorrect submission, but I realized my mistake after the Wrong Answer verdict and patched my solution.
  • C was evil because it had ample opportunity for off-by-one errors, one of which killed my solution.
  • My attempt at implementing D yielded a giant pile of spaghetti, which was unsurprisingly wrong.
  • E is definitely doable in 20min start to finish, but my combinatorics skills isn't strong enough for me to write down the recurrence after reading the problem.
Where I got lucky
  • What luck?!