Module-2: Competitive Programming Complete
Course Basic Data Structure
Course Materials:
Google Meet Video call link: https://meet.google.com/bcz-rnei-efo
Google Classroom: https://classroom.google.com/c/NTA5MjI3NzYwMjI4?cjc=5dtysxp
YouTube Playlist: https://youtube.com/playlist?list=PLoa_roVVsxA2C86GZV79HnB5ptSA-r6sv
Class Assignment Contest Links:
Vjudge Contest Link: https://vjudge.net/contest/536767
HackerRank Contest Link:
https://www.hackerrank.com/contests/competitive-programing-complete-course-batch1-contest
Google Classroom: https://classroom.google.com/c/NTA5MjI3NzYwMjI4?cjc=5dtysxp
Submit your Vjudge id and hackerrank id in the below form. Otherwise, your assignment won’t
be accepted :
https://forms.gle/8C3D5pXSRHviaQuBA
Class-1: Introduction to Partial Sum/Prefix Sum and its
Applications
Class Link: https://youtu.be/05mIMo8zGyM
Discussed Topics :
1. A little introduction to the course
2. Introduction to Prefix sum/Partial Sum
3. Implementation of Partial Sum
4. Practice problem
5. https://cses.fi/problemset/task/1646
6. https://www.spoj.com/problems/CSUMQ/
Code Template:
https://github.com/MuhammadShahriar/Module-2-Competitive-Programming-Complete-Course-
Basic-Data-Structure/blob/main/Template.cpp
Task-1 Solution:
https://github.com/MuhammadShahriar/Module-2-Competitive-Programming-Complete-Course-
Basic-Data-Structure/blob/main/Class-1/Task-1.cpp
Task-2 Solution:
https://github.com/MuhammadShahriar/Module-2-Competitive-Programming-Complete-Course-
Basic-Data-Structure/blob/main/Class-1/Task-2.cpp
Class tasks are given in the classroom, vjudge and hackerrank.
Class 2: Practice Problems of Partial Sum, Contribution
Technique, XOR Sum Query
Class Link: https://youtu.be/hnLgneOWozk
Discussed Topics :
1. How to solve problems in LeetCode
2. Practice Problems of Partial Sum
3. Contribution Technique
4. XOR Sum Query
5. Task-1: https://leetcode.com/problems/running-sum-of-1d-array/description/
6. Task-2: https://leetcode.com/problems/sum-of-all-odd-length-subarrays/description/
7. Task-3: https://cses.fi/problemset/task/1650/
Task-1 Solution:
https://github.com/MuhammadShahriar/Module-2-Competitive-Programming-Complete-Course-
Basic-Data-Structure/blob/main/Class-2/Task-1.cpp
Task-2 Solution:
https://github.com/MuhammadShahriar/Module-2-Competitive-Programming-Complete-Course-
Basic-Data-Structure/blob/main/Class-2/Task-2.cpp
Task-3 Solution:
https://github.com/MuhammadShahriar/Module-2-Competitive-Programming-Complete-Course-
Basic-Data-Structure/blob/main/Class-2/Task-3.cpp
Class tasks are given in the classroom, vjudge and hackerrank.
Class 3: More Practice Problems on Partial Sum and Contribution
Technique
Class Link: https://youtu.be/pQbC1rhylZE
Discussed Topics :
1. Powerful Observation problem
2. Task-1: https://cses.fi/problemset/task/1660/
3. Task-2: https://cses.fi/problemset/task/1661/
Task-1
Solution:https://github.com/MuhammadShahriar/Module-2-Competitive-Programming-Complete-
Course-Basic-Data-Structure/blob/main/Class-3/Task-1.cpp
Task-2 Solution:
https://github.com/MuhammadShahriar/Module-2-Competitive-Programming-Complete-Course-
Basic-Data-Structure/blob/main/Class-3/Task-2.cpp
Class tasks are given in the classroom, vjudge and hackerrank.
Class 4: A Hard Onsite Contest Problem of Partial Sum and
Contribution Technique
Class Link: https://youtu.be/c4wvjcZRiOk
Discussed Topics :
1. Hard and Powerful Observation Onsite contest problem
2. Task-1:
Problem link(K):
https://drive.google.com/file/d/1COB3MAKc8-7cULag6wRTnUKQrcAgxOPO/view
Submit here:
https://algo.codemarshal.org/contests/iiuc-2020/problems/K
Solution:
https://github.com/MuhammadShahriar/Module-2-Competitive-Programming-Complete-Course-
Basic-Data-Structure/blob/main/Class-4/Task-1.cpp
Class tasks are given in the classroom, vjudge and hackerrank.
Class 5: A Hard LightOJ Problem of Partial Sum and Contribution
Technique
Class Link: https://youtu.be/SnBTBypI-b4
Discussed Topics :
1. Hard and Powerful Observation LightOJ problem
2. Task-1: https://lightoj.com/problem/be-efficient
Solution:
https://github.com/MuhammadShahriar/Module-2-Competitive-Programming-Complete-Course-
Basic-Data-Structure/blob/main/Class-5/Task-1.cpp
Class tasks are given in the classroom, vjudge and hackerrank.
Class 6: Introduction to Recursion
Class Link: https://youtu.be/U32JZULeWb0
Discussed Topics:
1. Recursion or Recursive function
2. Calculate factorial using recursion
3. Calculate Fibonacci using recursion
4. How to use dynamic programming to reduce states in recursion
5. HackerRank Task-1:
https://www.hackerrank.com/contests/competitive-programing-complete-course-batch1-contest/
challenges/class-6-aa-task-1-aa-calculate-factorial-using-recursion
Code:
https://github.com/MuhammadShahriar/Module-2-Competitive-Programming-Complete-Course-
Basic-Data-Structure/blob/main/Class-6/HackerRank%20Task-1.cpp
6. HackerRank Task-2:
https://www.hackerrank.com/contests/competitive-programing-complete-course-batch1-contest/
challenges/class-6-aa-task-1-aa-calculate-factorial-using-recursion-ii
Code:
https://github.com/MuhammadShahriar/Module-2-Competitive-Programming-Complete-Course-
Basic-Data-Structure/blob/main/Class-6/HackerRank%20Task-2.cpp
Class tasks are given in the classroom, vjudge and hackerrank.
Class 7: Introduction to Dynamic Programming and Practice
problems
Class Link: https://youtu.be/vvRyRAuPakM
Discussed Topics:
1. Introduction to Dynamic Programming
2. Basics of Modular Arithmetic
3. Vjudge Task-1: https://lightoj.com/problem/hex-a-bonacci
Vjudge Task-1 Solution:
https://github.com/MuhammadShahriar/Module-2-Competitive-Programming-Complete-Course-
Basic-Data-Structure/blob/main/Class-7/Hex-a-bonacci.cpp
4. HackerRank Task-1:
https://www.hackerrank.com/contests/competitive-programing-complete-course-batch1-contest/
challenges/class-6-aa-task-1-aa-calculate-factorial-using-recursion-iii
HackerRank Task-1 Solution:
https://github.com/MuhammadShahriar/Module-2-Competitive-Programming-Complete-Course-
Basic-Data-Structure/blob/main/Class-7/HackerRank%20Task-1.cpp
Class tasks are given in the classroom, vjudge and hackerrank.
Class 8: Introduction to Insertion sort and Bubble sort.
Class Link: https://youtu.be/uYlsUvejPZM
Discussed Topics:
1. Insertion sort
Code:
https://github.com/MuhammadShahriar/Module-2-Competitive-Programming-Complete-Course-
Basic-Data-Structure/blob/main/Class-8/InsertionSort.cpp
2. Bubble sort
Code:
https://github.com/MuhammadShahriar/Module-2-Competitive-Programming-Complete-Course-
Basic-Data-Structure/blob/main/Class-8/BubbleSort.cpp
3. And their complexity analysis
4. Task-1: https://vjudge.net/contest/536767#problem/H
Code:
https://github.com/MuhammadShahriar/Module-2-Competitive-Programming-Complete-Course-
Basic-Data-Structure/blob/main/Class-8/Task-1.cpp
5. Task-2: https://vjudge.net/contest/536767#problem/I
Code:
https://github.com/MuhammadShahriar/Module-2-Competitive-Programming-Complete-Course-
Basic-Data-Structure/blob/main/Class-8/Task-2.cpp
Class tasks are given in the classroom, vjudge and hackerrank.
Class 9: Introduction to Merge Sort and Practice Problems.
Class Link: https://youtu.be/TFyJWbleSTE
Discussed Topics:
1. Merge Sort
Code:
https://github.com/MuhammadShahriar/Module-2-Competitive-Programming-Complete-Course-
Basic-Data-Structure/blob/main/Class-9/MergeSort.cpp
2. https://cses.fi/problemset/task/1621/
Code:
https://github.com/MuhammadShahriar/Module-2-Competitive-Programming-Complete-Course-
Basic-Data-Structure/blob/main/Class-9/Task-1.cpp
Class tasks are given in the classroom, vjudge and hackerrank.
Class 10: Introduction to Pointer and Structure.
Class Link: https://youtu.be/5juBqemgaeA
Discussed Topics:
1. Pointer
2. Structure.
Class tasks are given in the classroom, vjudge and hackerrank.
Class 11: Structure Sort.
Class Link: https://youtu.be/OKL1joCwsQs
Discussed Topics:
1. Structure Sort
2. Pair Sort
3. Vjudge Task-1: https://vjudge.net/problem/CodeForces-166A
Solution:
https://github.com/MuhammadShahriar/Module-2-Competitive-Programming-Complete-Course-
Basic-Data-Structure/blob/main/Class-10/Vjudge%20Task-1.cpp
Class tasks are given in the classroom, vjudge and hackerrank.
Class 12: Introduction to Binary Search.
Class Link: https://youtu.be/VSnknW0vJ7s
Discussed Topics:
1. Binary search
2. Google Classroom Task-1: https://leetcode.com/problems/binary-search/
Solution:
https://github.com/MuhammadShahriar/Module-2-Competitive-Programming-Complete-Course-
Basic-Data-Structure/blob/main/Class-11/Google%20Classroom%20Task-1.cpp
3. Vjudge Task-1: https://vjudge.net/contest/536767#problem/K
Solution:
https://github.com/MuhammadShahriar/Module-2-Competitive-Programming-Complete-Course-
Basic-Data-Structure/blob/main/Class-11/Vjudge%20Task-1.cpp
4. Google Classroom Task-2: https://leetcode.com/problems/intersection-of-two-arrays/
Solution:
https://github.com/MuhammadShahriar/Module-2-Competitive-Programming-Complete-Course-
Basic-Data-Structure/blob/main/Class-11/Google%20Classroom%20Task-2.cpp
5. Vjudge Task-2: https://vjudge.net/contest/536767#problem/L
Solution:
https://github.com/MuhammadShahriar/Module-2-Competitive-Programming-Complete-Course-
Basic-Data-Structure/blob/main/Class-11/Vjudge%20Task-2.cpp
References:
http://www.shafaetsplanet.com/?p=2279
https://cp-algorithms.com/num_methods/binary_search.html#practice-problems
Class tasks are given in the classroom, vjudge and hackerrank.
Class 13: Upper Bound and Lowebound.
Class Link: https://youtu.be/bDu3Yuq2M_A
Discussed Topics:
1. Upper bound
Code:
https://github.com/MuhammadShahriar/Module-2-Competitive-Programming-Complete-Course-
Basic-Data-Structure/blob/main/Class-13/Upper_bound.cpp
2. Lower bound
Code:
https://github.com/MuhammadShahriar/Module-2-Competitive-Programming-Complete-Course-
Basic-Data-Structure/blob/main/Class-13/Lower_bound.cpp
3. Some properties of the upper bound and lower bound:
● Number of values smaller than x = lo
● Number of values greater or equal to x = n - lo
● Number of values less than or equal to x = up
● Number of values greater than x = n - up
4. Google Classroom Task-1:
https://practice.geeksforgeeks.org/problems/first-and-last-occurrences-of-x3116/1
Solution:
https://github.com/MuhammadShahriar/Module-2-Competitive-Programming-Complete-Course-
Basic-Data-Structure/blob/main/Class-13/Google%20Classroom%20Task-1.cpp
5. Google Classroom Task-2: https://leetcode.com/problems/search-insert-position/
Solution:
https://github.com/MuhammadShahriar/Module-2-Competitive-Programming-Complete-Course-
Basic-Data-Structure/blob/main/Class-13/Google%20Classroom%20Task-2.cpp
References:
http://www.shafaetsplanet.com/?p=2279
https://cp-algorithms.com/num_methods/binary_search.html#practice-problems
Class tasks are given in the classroom, vjudge and hackerrank.
Class 14: Introduction to Integer Bisection and Practice problems
for upper bound and lower bound
Class Link: https://youtu.be/r_1E-OGzuEY
Discussed Topics:
1. Google Classroom Task-1: https://leetcode.com/problems/two-sum-ii-input-array-is-sorted/
Solution:
https://github.com/MuhammadShahriar/Module-2-Competitive-Programming-Complete-Course-
Basic-Data-Structure/blob/main/Class-14/Google%20Classroom%20Task-1.cpp
2. Google Classroom Task-2:
https://leetcode.com/problems/count-negative-numbers-in-a-sorted-matrix/
Solution:
https://github.com/MuhammadShahriar/Module-2-Competitive-Programming-Complete-Course-
Basic-Data-Structure/blob/main/Class-14/Google%20Classroom%20Task-2.cpp
3. Introduction to integer bisection
4. Vjudge Task-1: https://www.spoj.com/problems/MATHLOVE/
Solution:
https://github.com/MuhammadShahriar/Module-2-Competitive-Programming-Complete-Course-
Basic-Data-Structure/blob/main/Class-14/Vjudge%20Task-1.cpp
Class 15: Integer Bisection and Practice Problems
Class Link: https://youtu.be/bgpMKcNza08
Discussed Topics:
1. Google Classroom Task-1:
https://www.hackerearth.com/practice/algorithms/searching/binary-search/practice-problems/alg
orithm/monks-encounter-with-polynomial/
Solution:
https://github.com/MuhammadShahriar/Module-2-Competitive-Programming-Complete-Course-
Basic-Data-Structure/blob/main/Class-15/Google%20Classroom%20Task-1.cpp
2. Google Classroom Task-2: https://www.spoj.com/problems/RPLC/
Solution:
https://github.com/MuhammadShahriar/Module-2-Competitive-Programming-Complete-Course-
Basic-Data-Structure/blob/main/Class-15/Google%20Classroom%20Task-2.cpp
3. Google Classroom Task-3: https://www.spoj.com/problems/SABBIRGAME/
Solution:
https://github.com/MuhammadShahriar/Module-2-Competitive-Programming-Complete-Course-
Basic-Data-Structure/blob/main/Class-15/Google%20Classroom%20Task-3.cpp
Class 16: Integer Bisection Practice problems
Class Link: https://youtu.be/puFW0EvusrI
Discussed Topics:
1. Google Classroom Task-1:
Problem Link: https://drive.google.com/file/d/1LaA_0J-LsAwyBkdJ9EQbiKPZ-gFrk3bH/view
Submit Link: https://algo.codemarshal.org/contests/ncpc18/problems/I
Solution:
https://github.com/MuhammadShahriar/Module-2-Competitive-Programming-Complete-Course-
Basic-Data-Structure/blob/main/Class-16/Google%20Classroom%20Task-1.cpp
2. Google Classroom Task-2:https://codeforces.com/problemset/problem/474/B
Solution:
https://github.com/MuhammadShahriar/Module-2-Competitive-Programming-Complete-Course-
Basic-Data-Structure/blob/main/Class-16/Google%20Classroom%20Task-2.cpp
Class 17: Introduction to Fraction Bisection Practice problems
Class Link: https://youtu.be/hEtw0dgVJ0g
Discussed Topics:
1. Google Classroom Task-1:
https://practice.geeksforgeeks.org/problems/square-root/1
Solution:
https://github.com/MuhammadShahriar/Module-2-Competitive-Programming-Complete-Course-
Basic-Data-Structure/blob/main/Class-17/Google%20Classroom%20Task-1.cpp
2. Google Classroom Task-2:
http://www.lightoj.com/volume_showproblem.php?problem=1043
Solution:
https://github.com/MuhammadShahriar/Module-2-Competitive-Programming-Complete-Course-
Basic-Data-Structure/blob/main/Class-17/Google%20Classroom%20Task-2.cpp
Class 18: Fraction Bisection Practice problems
Class Link: https://youtu.be/6ldmR13xPes
Discussed Topics:
1. Google Classroom Task-1:
https://lightoj.com/problem/crossed-ladders
Solution:
https://github.com/MuhammadShahriar/Module-2-Competitive-Programming-Complete-Course-
Basic-Data-Structure/blob/main/Class-18/Google%20Classroom%20Task-1.cpp
Class 19: Fraction Bisection Practice problems
Class Link: https://youtu.be/MUYJ-34TNH8
Discussed Topics:
1. Google Classroom Task-1:
https://lightoj.com/problem/expanding-rods
Solution:
https://github.com/MuhammadShahriar/Module-2-Competitive-Programming-Complete-Course-
Basic-Data-Structure/blob/main/Class-19/Google%20Classroom%20Task-1.cpp