Hi,
This is a repository of algorithms and data structures in their most standard form. Its intended purpose is to be a learning source for students preparing for IOI/ICPC. I have made all variable and function names meaningful in order to facilitate easy understanding.
I will continue to update the library of algorithms as I continue learning them. Eventually, I will also upload my solutions of interesting problems from CodeChef, CodeForces, and various Informatics Olympiads.
The algorithms included have various difficult levels. Next to each algorithm I will put my rating of how difficult I found it. This rating is a combination of the difficulty involved in learning, as well as implementing it. I recommend that those learning algorithms start from easier topics and work their way up. No algorithm can be properly learned without also solving problems based on it. Thus, I will also upload problem links next to the algorithms whenever I find the time.
For some important toics like dynamic programming, it's hard to pin down specific algorithms to upload. Even standard algos like Digit, Bitmask, Divide and Conquer DP have their implementations heavily influenced by the problem. Instead, I will be uploading a large number of my solutions for such problems and will arrange them based on the topic.
Unlike my sample algorithms, most of my problem submissions are unlikely to have perfect variable names. I will try to modify the names as much as possible in order to facilitate understanding. I will also include a description of my logic in the beginning of each problem submission.
NOTE: I have uploaded the code for many algorithms and data structures such as merge sort, quick sort, heap, etc. that you probably shouldn't implement during a contest. You'd be much better off using inbuilt functions for these concepts. I only uploaded them because I thought they were interested and they have certain modified uses (Eg. Merge Sort can be used to count the number of inversions in an array efficiently)
If anyone has any recommendations or needs to contact me regarding my work on this, you can reach me at: [email protected] or +91 8860756594 (Whatsapp)
My handle on all competitive programming websites is aggu_01000101
Warm Regards,
Aryan Agarwala