Thank you so much everyone for taking part in DUCS Winter Warm-Up 2019.
I had created this contest truly independently and the main motive was to give a kick start to beginners at the last day of 2019. I had intentionally kept all the problems doable for beginners, I know seasoned programmers would have found this contest way too easy but I never wanted to see this as a contest but something educational. The most important thing for me was to make problems in such a way that beginners are able to solve around half or more of the set easily, which surely will boost their confidence and provide them with a good kick start.
Actually after my semester exams got over in mid December, I thought of doing something meaningful for the whole community, that’s when I planned this contest. And it was very hectic for me because I started very very late and from scratch and I was all alone. Also I didn’t want to tell about this contest to my peers at University because it was also a surprise for my seniors at DUCS. The likelihood of my seniors coming to the University during the next semester is very less, so I wanted to give them a surprise before year end and before they go, something that they’ll remember and will stay for long. So I dedicated all of the contest to them. All of the problems are based on my seniors at DUCS and it was a surprise for everyone. It had a lot of internal references, meanings and memories linked for everyone. Also, problem codes were sorted in the order when I met that particular senior.
Also, I tried to give a learning to beginners with each problem. This is what I intended:
DWW19A: Strings can be treated as numbers (which is not so obvious for beginners), something like a palindrome.
DWW19B: Relation between LCM and GCD, and most importantly about overflows and limits (which is one of the most common mistake during the initial days), and smart tricks to handle them like using some basic mathematics, some smart arithmetic tricks and stuff.
DWW19C: Very very basic greedy strategy, counting characters and everything basic with a string.
DWW19D: Prefix sums, binary search, basic sliding window algorithms.
DWW19E: Basic graph traversals (DFS or BFS) on a grid, some mathematical proofs and assertions, modular arithmetic, modular inverse and some basic combinatorics.
DWW19F: Online algorithms and self ordering data structures like priority queues (heaps) and multi-sets (balanced trees).
DWW19G: Online algorithms and some special data structures like indexed set (GNU Policy Based Data Structure) or Segment Tree or Fenwick Tree (Binary Indexed Tree (BIT)) and other such tree based structures for efficiently handling online queries.
DWW19H: Basic counting with strings, integer overflows, and some very basic observations.
DWW19I: Basic GCD trick and mathematics.
DWW19J: Very very basic concepts of Number and Game Theory and Primality test (sieve and binary search for small test set, an overkill but very fast) , observations, factorization.
DWW19K: Real numbers and precision, just wanted beginners to know how to print real numbers during contests.
I just wanted everyone (especially beginners) to learn something before the arrival of 2020 and kick start them, so that they can start off things well in 2020. Also a nice coding warmup for everyone on the last day of 2019 in this cold winter season.
I’m also planning to publish editorials for this contest, so please be patient and allow me a few days, it will take a few days along with University.
I hope you all enjoyed this light heart programming contest!