## 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

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

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

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%).